gpt4 book ai didi

javascript - 通过从下一个 block 中仅添加 1 个元素来在 javascript 中 block 数组

转载 作者:行者123 更新时间:2023-11-30 09:19:04 24 4
gpt4 key购买 nike

我希望将 JavaScript 中的数组分成 3 个 block 。但我只想将 block 增加 1 个元素。示例如下:

[1,2,3,4,5,6,7,8] => [1,2,3], [2,3,4], [3,4,5], [4,5,6], [5,6,7], [6,7,8]

所有结果数组的大小都应为 3。因此只有一个元素向左滑动。

我有以下代码将数组分成 3 个 block :

_.chunk($scope.substituteItems, 3);

此代码将数组划分为:[1,2,3,4,5,6,7,8] => [1,2,3], [3,4,5], [5,6,7], [8]

显然这段代码只是将数组分成相等的 block ,这不是我想要的。

最佳答案

您可以使用reduce() 来遍历数组。使用 slice() 将数组浅复制为 block 。

let arr = [1, 2, 3, 4, 5, 6, 7, 8];
let numOfChunk = 3;

let result = arr.reduce((c, v, i, a) => {
if (i + numOfChunk <= a.length) c.push(a.slice(i, i + numOfChunk));
return c;
}, [])


console.log(result);


如果您更喜欢一行代码,也可以使用 concat() 而不是 push()

let arr = [1, 2, 3, 4, 5, 6, 7, 8];
let numOfChunk = 3;

let result = arr.reduce((c, v, i, a) => i + numOfChunk <= a.length ? c.concat([a.slice(i, i + numOfChunk)]) : c, [])

console.log(result);

关于javascript - 通过从下一个 block 中仅添加 1 个元素来在 javascript 中 block 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53000747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com