码迷,mamicode.com
首页 > 编程语言 > 详细

数组分组chunk的一种写法

时间:2018-10-11 15:15:07      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:...   索引   class   apply   map   das   style   turn   分组   

lodash的_.chunk函数可以将数组按照数量分成若干组,

例如:

const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
const groupByNum = 3;

会分成

[ [1,2,3], [4,5,6], [7,8,9], [10,11] ]

下面是一种 map + slice 的写法

const result = Array.apply(null, {
    length: Math.ceil(data.length / groupByNum)
}).map((x, i) => {
    return data.slice(i * groupByNum, (i + 1) * groupByNum);
});

写法分析:

1. 首先使用了 Array.apply(null, {length: xxxx}) 来生成一个指定长度的数组,这里注意

new Array(length) 生成的是 [undefined x length],是一个长度为length的数组,元素未被赋值,与[undefined, undefined, ...] length个undefined的数组并不相同。

Array.apply(null, {length: xxxx}) 生成的是length个undefined的数组,可以使用map

new Array(length).map 是不能正常运行的,可以使用fill,new Array(length).fill().map 可以得到预期结果

2. apply后面的参数可以是一个类数组,甚至一个只包含length属性的对象

3. 生成数组之后,slice按照索引切割,返回数组作为一项

 


出处:https://segmentfault.com/a/1190000007464770

数组分组chunk的一种写法

标签:...   索引   class   apply   map   das   style   turn   分组   

原文地址:https://www.cnblogs.com/mengff/p/9772305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!