Javascript 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

如何在JS中洗牌/操纵2d数组中的列?假设我有这个:

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.