如何从单个数组创建多个数组?

How to create multiple array from single array?

我有一种情况,我在一个数组中获取数据,我必须将其转换为多个数组...就像 Matrix。

const array = [1,2,3,4,5,6,7,8,9]

输出应该是:

[[1,3],[2,4],[5,7],[6,8],[9]]

这是我目前所拥有的:

let i = 0;
const add = [];
while (i < list.length) {
  add.push([list[i], list[i + 2]]);
  i = i + 1;
}
return add;

也许试试这个?

let i = 0;
const list = [1,2,3,4,5,6,7,8,9]
const add = [];
let newarr =[]
while (i < list.length) {
  add.push([list[i], list[i + 2]]);
  add.push([list[i+1],list[i+3]])
  i +=4;
}
//remove undefined item from the array
newarr = add.map(arr=>arr.filter(item =>item != undefined)).filter(item=>item!="")


console.log(newarr)

const array = [1,2,3,4,5,6,7,8,9];
const visitedIndex = [];
const newArray = [];
array.forEach((element, i) => {
  if (!visitedIndex.includes(i)) {
    if (array[i+2]) {
      newArray.push([array[i], array[i+2]])
    } else {
      newArray.push([array[i]])
    }
    visitedIndex.push(i);
    visitedIndex.push(i+2);
  };

});

Lodash chunk 如果你不介意的话。

或者你可以在 vanila js 中使用递归方法。

const array = [1,2,3,4,5,6,7,8,9];

const chunk = (arr, n) => arr.length ? [arr.slice(0, n), ...chunk(arr.slice(n), n)] : [];

console.log(chunk(array, 2));
.as-console-wrapper{min-height: 100%!important; top: 0}

我想这一定能解决你的问题。

    function chunkArrayInGroups(arr, size) {
    let newArr = [];
    for (let i = 0; i < arr.length; i += size) {
        newArr.push(arr.slice(i, i + size));
    }
    console.log(newArr)
    return newArr;
}
chunkArrayInGroups([1,2,3,4,5,6,7,8,9],2)

这会将我们较大的数组分成大小为 2 小于 2 的块数组。