在JavaScript中转换2D数组

在JavaScript中转换2D数组

我有一个数组,类似于:

[
    [1,2,3],
    [1,2,3],
    [1,2,3],]

我想转接它以得到以下数组:

[
    [1,1,1],
    [2,2,2],
    [3,3,3],]

使用循环以编程方式这样做并不困难:

function transposeArray(array, arrayLength){
    var newArray = [];
    for(var i = 0; i < array.length; i++){
        newArray.push([]);
    };

    for(var i = 0; i < array.length; i++){
        for(var j = 0; j < arrayLength; j++){
            newArray[j].push(array[i][j]);
        };
    };

    return newArray;}

然而,这似乎很笨重,我觉得应该有一个更简单的方法来做到这一点。在那里吗?


温温酱
浏览 540回答 3
3回答

翻翻过去那场雪

array[0].map((col,&nbsp;i)&nbsp;=>&nbsp;array.map(row&nbsp;=>&nbsp;row[i]));map打电话callback按顺序对数组中的每个元素执行一次函数,并根据结果构造一个新数组。callback只对已赋值的数组的索引调用;对已删除或从未被赋值的索引调用。callback使用三个参数调用:元素的值、元素的索引和正在遍历的Array对象。[来源]

MM们

你可以用底盘.js_.zip.apply(_,&nbsp;[[1,2,3],&nbsp;[1,2,3],&nbsp;[1,2,3]])

慕容森

以下是我在现代浏览器中的实现(没有依赖关系):transpose&nbsp;=&nbsp;m&nbsp;=>&nbsp;m[0].map((x,i)&nbsp;=>&nbsp;m.map(x&nbsp;=>&nbsp;x[i]))
打开App,查看更多内容
随时随地看视频慕课网APP