首页 > 解决方案 > 将大数组对象分解成更小的块

问题描述

我有一个Array,它可能与1 - 600K记录不同。因此,我需要找到一种方法将这个更大的数组分解成更小的块,并对更小的块执行一些操作。

我怎样才能做到这一点?

我的解决方案如下:我的问题是我不确定数组将包含多少个元素,所以我无法将它除以 10,以确定块大小。

for(const i = 0 ; i < largeArray.length; largeArray.length/10) {
   var p1 = largeArray.slice(i,whatisthechunksize);
}

标签: angulartypescript

解决方案


使用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);


推荐阅读