数组分组chunk的一种写法
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
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-10-11 Unlink of file '.git/objects/pack/pack-***.pack' failed. Should I try again? (y/n) (转)
2016-10-11 不定宽高元素的水平垂直居中