angular - 将大数组对象分解成更小的块
问题描述
我有一个Array
,它可能与1 - 600K
记录不同。因此,我需要找到一种方法将这个更大的数组分解成更小的块,并对更小的块执行一些操作。
我怎样才能做到这一点?
我的解决方案如下:我的问题是我不确定数组将包含多少个元素,所以我无法将它除以 10,以确定块大小。
for(const i = 0 ; i < largeArray.length; largeArray.length/10) {
var p1 = largeArray.slice(i,whatisthechunksize);
}
解决方案
使用Array.prototype.reduce
. 您还可以将该原型扩展为按所需数字拆分:
Array.prototype.splitBy = function(size) {
return this.reduce((p, n) => {
if (p[p.length - 1].length < size) p[p.length - 1].push(n);
else p.push([n]);
return p;
}, [[]]);
}
const data = new Array(500).fill(0).map((v, i) => i);
const splitted = data.splitBy(10);
console.log(splitted);
console.log('Size of splitted array = ', splitted.length);
推荐阅读
- java - Struts2 Iterator Sort List 倒序排列
- php - 通过数组中的路径更改json中的值
- javascript - 如何在javascript中使用paremt post消息关闭Iframe
- reactjs - 如何使用现有的登录 Chrome 用户配置文件正确设置 VS Code 以在 chrome 中调试?
- git - 在 git 上编写多行提交消息是一种不好的做法吗?
- excel - VBA根据标准提取唯一值
- mongodb - 为什么 PyMongo 在列出集合时给出不支持的投影选项:$substr?
- python - Python __init__ 方法中的 DRY 原理
- javascript - 如何过滤文档中的嵌入文档?
- opencv - cunstom AM57xx 板上的 arago yocto 项目上的 tiovx-app-host 错误