我有2d格式错误的数组,如下所示:
[['a','b','c'],['d','f','e'],['g','h','i']]
我希望它像这样转换:
[['a','d','g'],['b','f','h'],['c','e','i']]
最好的方法是什么?我找不到解决方案。
答案 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)
双重映射一个班轮解决方案。假设外部数组长度和内部数组长度相同
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;