javascript - 通过从下一个块中仅添加 1 个元素,在 javascript 中创建块数组
问题描述
我希望将 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);
推荐阅读
- mysql - 单表跨列唯一值的SQL查询
- javascript - 如何修复站点地图按钮的 html 中的内联编码
- javascript - 尝试合并 Record.js 和 driveApi
- node.js - Express.js 继续提供静态 index.html(React 应用程序),即使我不想要它
- google-sheets - 在 Google 表格中制作表格时遇到问题
- c++ - 关于套接字通信的线程
- javascript - 如何有条件地向对象添加属性
- angular - *ngFor 指令中有许多 mat-paginator 实例
- java - 如何在 Selenium 中切换到子窗口的子窗口(窗口句柄和标题是动态的)?
- keras - 如何在 repl.it 中使用 Keras