Javascript创建一个二维数组的新二维数组

时间:2017-12-11 18:24:22

标签: javascript arrays

我有2d格式错误的数组,如下所示:

[['a','b','c'],['d','f','e'],['g','h','i']]

我希望它像这样转换:

[['a','d','g'],['b','f','h'],['c','e','i']]

最好的方法是什么?我找不到解决方案。

4 个答案:

答案 0 :(得分:1)

尝试这种方法。我还添加了Array.from({length: array.length}, (value, key) => key)以获得更多动态代码。

const array = [['a','b','c'],['d','f','e'],['g','h','i']];

const mapped = array.map((item, index, arr) => Array.from({length: array.length}, (value, key) => key).map(i => arr[i][index]));

console.log(mapped);

答案 1 :(得分:0)

您可以通过交换新结果的索引来转置数组。

var array =[['a','b','c'],['d', 'f', 'e'], ['g', 'h', 'i']],
    result = array.reduce(function (r, a, i) {
        a.forEach(function (v, j) {
            (r[j] = r[j] || [])[i] = v;
        });
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:0)

a=[['a','b','c'],['d','f','e'],['g','h','i']]

// initialising b
b= [['a','b','c'],['d','f','e'],['g','h','i']]

//Talking transpose
for(i =0;i<3;i++){
    for(j=0;j<3;j++){
        b[i][j] = a[j][i];
    }
}

答案 3 :(得分:0)

双重映射一个班轮解决方案。假设外部数组长度和内部数组长度相同

&#13;
&#13;
var data = [['a','b','c'],['d','f','e'],['g','h','i']]

var res= data.map((a, i) => data.map((arr)=>arr[i]));

console.log(res)
&#13;
&#13;
&#13;