Перебирая вложенные массивы и переупорядочивая их в JavaScript - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь провести через вложенные массивы oop и переупорядочить их в новые вложенные массивы. Например, возьмите [[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]

Я упускаю что-то очевидное, но почему бы не l oop дополнительные разы в pu sh другие буквы в массиве?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Вы можете использовать Array.prototype.map:

let rowArr = [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l']];
let newRowArr = [];
let arraySize = 4;

const arrayColumn = (arr, n) => arr.map(x => x[n]);

for (let i = 0; i < arraySize; i++) {
  newRowArr.push(arrayColumn(rowArr, i));
}

console.log(newRowArr);
0 голосов
/ 12 апреля 2020

Вы можете просто использовать вложенные l oop, где 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)
...