猿问

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

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


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

我想要的结果是:


[1,2,3],[4,5,6] and the second [1,2,3],[4,5],[6,7,8]

这是我的代码:


for (let auxexample = 0; auxexample < example.length; auxexample++) {

    finalauxarray.push(auxarrayindex.slice(0, example[auxexample]));

}

我的代码的结果是:


[1,2,3],[1,2,3] and the second [1,2,3],[1,2],[1,2,3]


德玛西亚99
浏览 118回答 3
3回答

慕码人2483693

问题是您的切片总是从相同的索引 (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++) {&nbsp; &nbsp;finalauxarray.push(auxarrayindex.slice(i, i+=example[auxexample]));}console.log(finalauxarray);你也可以使用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);

侃侃无极

问题是因为切片参数错误您可以在此链接上了解有关切片如何工作的更多信息https://www.w3schools.com/jsref/jsref_slice_array.asp它将开始位置作为第一个参数,将不包含在结果中的结束位置作为最后一个参数您也可以为此使用 splice&nbsp;https://www.w3schools.com/jsref/jsref_splice.asp希望有帮助

梦里花落0921

工作示例使用splice而不是slice我认为它为这个特定用例提供了一个稍微干净的 API:let example = [3, 3];let auxArrayIndex = [1, 2, 3, 4, 5, 6];let example2 = [3, 2, 3];let auxArrayIndex2 = [1, 2, 3, 4, 5, 6, 7, 8];function getChunks(chunkSizes, array) {&nbsp; let result = [];&nbsp; for (let chunkSize of chunkSizes) {&nbsp; &nbsp; result.push(array.splice(0, chunkSize));&nbsp; }&nbsp; return result;}let chunks = getChunks(example, auxArrayIndex);let chunks2 = getChunks(example2, auxArrayIndex2);console.log(chunks); // logs "[1,2,3], [4,5,6]"console.log(chunks2); // logs "[1,2,3], [4,5], [6,7,8]"
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答