我希望将JavaScript中的数组划分为3个块。但是我只想将块增加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个块:
_.chunk($scope.substituteItems, 3);
此代码将数组划分为:[1,2,3,4,5,6,7,8] => [1,2,3],[3,4,5],[5,6,7], [8]
显然,这段代码只是将数组分成相等的块,这不是我想要的。
您可以reduce()
用来遍历数组。用于slice()
将数组浅复制到块中。
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句