我正在尝试遍历嵌套数组并将它们重新排序为新的嵌套数组。例如,取[[a,b,c,d],[e,f,g,h],[i,j,k,l]]并将其更改为[[a,e,i],[b ,f,j],[c,g,k],[d,h,l]]
let rowArr = [[a,b,c,d], [e,f,g,h], [i,j,k,l]];
let newRowArr = [];
let length = rowArr.length;
for(let i = 0; i<length; i++){
for(let j = 0; j<rowArr.length; j++){
newRowArr.push(rowArr[i][j]);
j+=rowArr.length;
}
console.log(newRowArr) //I get only [a,e,i]
我遗漏了一些显而易见的东西,但为什么它不循环额外的时间将其他字母推入数组?
您可以使用嵌套循环,其中i
和j
是内部索引名称中外部的名称,然后使用它们作为result[j][i] = current inner loop value
添加到新数组中>
let arr = [
['a', 'b', 'c', 'd'],
['e', 'f', 'g', 'h'],
['i', 'j', 'k', 'l']
];
const result = []
arr.forEach((a, i) => {
a.forEach((e, j) => {
if (!result[j]) result[j] = []
result[j][i] = e
})
})
console.log(result)
您可以使用Array.prototype.map
: