如何用JavaScript实现按指定长度拆分数组的功能?
实现数组按指定大小分组的JavaScript函数
嘿,这个分组需求其实在日常开发里挺常见的,我给你分享两种靠谱的实现方式,都能完美满足你的要求~
方法一:使用while循环 + splice(直观易懂)
这种方式逻辑很直白,就是不断从数组里截取指定长度的片段,直到数组被取空:
function chunkArray(array, size) { // 先做参数校验,避免传入无效的分组大小 if (size < 1) { throw new Error('分组大小必须是正整数哦'); } const result = []; // 复制原数组,防止修改到原始数据(如果不需要保护原数组,可以直接用原数组) const tempArr = [...array]; while (tempArr.length > 0) { // 每次从数组开头截取size个元素,加到结果数组里 result.push(tempArr.splice(0, size)); } return result; }
方法二:使用reduce方法(函数式风格)
如果你更喜欢函数式编程的写法,用reduce实现会更简洁,而且不会修改原数组:
function chunkArray(array, size) { if (size < 1) { throw new Error('分组大小必须是正整数哦'); } return array.reduce((result, currentItem, index) => { // 计算当前元素应该归属的分组索引 const chunkIndex = Math.floor(index / size); // 如果该分组还不存在,就初始化一个空数组 if (!result[chunkIndex]) { result[chunkIndex] = []; } // 把当前元素加入对应的分组 result[chunkIndex].push(currentItem); return result; }, []); // 初始化结果数组为空数组 }
测试验证
用你给出的例子测试一下,完全符合预期:
const testArray = ['a','b','c','d','e','f','g','h','i']; console.log(chunkArray(testArray, 2)); // 输出:[['a','b'], ['c','d'], ['e','f'], ['g','h'], ['i']] console.log(chunkArray(testArray, 3)); // 输出:[['a','b','c'], ['d','e','f'], ['g','h','i']]
两种方法都能解决问题,你可以根据自己的代码风格和需求来选~
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

