Javascript 2d数组操作(列提取)
如何在JS中洗牌/操纵2d数组中的列?假设我有这个:Javascript 2d数组操作(列提取),javascript,arrays,Javascript,Arrays,如何在JS中洗牌/操纵2d数组中的列?假设我有这个: data: [ [0, 29], [1, 71], [3, 106] ] 我想做的一些手术 1将第二列放在第一列的位置 < P > 2在中间插入一个新列。< /P> 3删除一列 我能想到的就是每个操作都有一个for循环 一, 然后对其他操作执行类似操作。有什么LIB或更好的方法可以做到这一点吗 function swa
data: [
[0, 29],
[1, 71],
[3, 106]
]
我想做的一些手术
1将第二列放在第一列的位置
< P > 2在中间插入一个新列。< /P>
3删除一列
我能想到的就是每个操作都有一个for循环
一,
然后对其他操作执行类似操作。有什么LIB或更好的方法可以做到这一点吗
function swap(data, i1, i2) {
var temp = data[i1];
data[i1] = data[i2];
data[i2] = temp
}
function insert(data, index, elem) {
data.splice(index, 0, elem)
}
function delete(data, index) {
data.splice(index, 0, 1)
}
我相信您要么创建一个数据结构,要么遍历。尽管您只需要将每个子数组作为每个索引(而不是整个二维数组)转到每个子数组。以下是一些例子:
function delCol(a,col){
for(var i=0; i<a.length; i++){
a[i].splice(col,1);
}
}
function swapCol(a,col1,col2){
for(var i=0; i<a.length; i++){
var t = a[i][col1];
a[i][col1] = a[i][col2];
a[i][col2] = t;
}
}
swapCol(data,0,1); //Swap column 0 and 1.
您还需要对行执行操作吗?如果不是,最简单的解决方案就是转置数组……只是为了澄清一下:我倾向于垂直思考“列”。这意味着0,1,3是一列,还是0,29是一列?此外,如果0、1和3是其他数字的关联索引,那么我认为使用JS对象{},而不是[]0,1,3是列,可能有更好的方法。没有关联索引,因为不能保证值是唯一的。这只是数据。
function delCol(a,col){
for(var i=0; i<a.length; i++){
a[i].splice(col,1);
}
}
function swapCol(a,col1,col2){
for(var i=0; i<a.length; i++){
var t = a[i][col1];
a[i][col1] = a[i][col2];
a[i][col2] = t;
}
}
swapCol(data,0,1); //Swap column 0 and 1.