拆分具有特定块大小的数组

Xav*_*elo 0 javascript arrays chunks splice

例如我有一个块数组,这个数组有单个块的大小。

let example = [3,3]; // Chunks array
let auxarrayindex = [1,2,3,4,5,6]; // Array that I want to splice
let example2 = [3,2,3]; // Chunks array
let auxarrayindex2 = [1,2,3,4,5,6,7,8]; // Array that I want to splice
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

[1,2,3],[4,5,6] and the second [1,2,3],[4,5],[6,7,8]
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

for (let auxexample = 0; auxexample < example.length; auxexample++) {
    finalauxarray.push(auxarrayindex.slice(0, example[auxexample]));
}
Run Code Online (Sandbox Code Playgroud)

我的代码的结果是:

[1,2,3],[1,2,3] and the second [1,2,3],[1,2],[1,2,3]
Run Code Online (Sandbox Code Playgroud)

tri*_*cot 6

问题是您的切片总是从相同的索引 (0) 开始。

使用一个i随着你获取块而增加的变量(如):

let example = [3,2,3];
let auxarrayindex = [1,2,3,4,5,6,7,8];

let finalauxarray = [];
let i = 0;
for (let auxexample = 0; auxexample < example.length; auxexample++) {
   finalauxarray.push(auxarrayindex.slice(i, i+=example[auxexample]));
}

console.log(finalauxarray);
Run Code Online (Sandbox Code Playgroud)

您也可以map用于循环:

let example = [3,2,3];
let auxarrayindex = [1,2,3,4,5,6,7,8];

let i = 0;
let finalauxarray = example.map(size => auxarrayindex.slice(i, i+=size));

console.log(finalauxarray);
Run Code Online (Sandbox Code Playgroud)