今天分享一个使用 Javascript 分割数组为多个自数组的方法实现。我使用它的场景如下:
给定一个数组 arr 和指定大小 fixed:
const arr = [ { id: 1, name: 'name1' }, { id: 2, name: 'name2' }, { id: 3, name: 'name3' }, { id: 4, name: 'name4' }, { id: 5, name: 'name5' }, { id: 6, name: 'name6' }, { id: 7, name: 'name7' }, { id: 8, name: 'name8' }, { id: 9, name: 'name9' } ] const fixed = 2; 期望的结果是生成一个数组,数组中包含 5 个数组,如下:
[ [ { id: 1, name: 'name1' }, { id: 2, name: 'name2' } ], [ { id: 3, name: 'name3' }, { id: 4, name: 'name4' } ], [ { id: 3, name: 'name3' }, { id: 6, name: 'name6' } ], [ { id: 3, name: 'name3' }, { id: 6, name: 'name6' } ], [ { id: 3, name: 'name3' }, {} ] ] 按照 fixed 的大小分割,如果遇到不够 fixed 大小的,使用空对象填充。这种场景对表格数据填充需要等宽或者等数量会有所帮助。 具体实现代码如下:
/** * * @param {arr} 要分割的数组 * @param {fixed} 指定分割的大小 **/ function splitArr(arr, fixed) { let result = []; let size = arr.length; let len = Math.ceil(arr.length / fixed);//向上取整 for(let i=0; i<len; i++){ let tempArr = []; for(let j=0; j<fixed; j++){ if((i*fixed)+j >= size){ tempArr[j] = {} }else{ tempArr[j] = arr[j]; } } result.push(tempArr); if(arr.length > 0){ arr.splice(i, fixed); } } return result; } const arr = [ { id: 1, name: 'name1' }, { id: 2, name: 'name2' }, { id: 3, name: 'name3' }, { id: 4, name: 'name4' }, { id: 5, name: 'name5' }, { id: 6, name: 'name6' }, { id: 7, name: 'name7' }, { id: 8, name: 'name8' }, { id: 9, name: 'name9' } ] const result = splitArr(arr, 2); console.log(result); 希望本次分享的代码对你有所帮助,Thanks !!!



