今天分享一个使用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: 5, name: 'name5' }, { id: 6, name: 'name6' } ],[ { id: 7, name: 'name7' }, { id: 8, name: 'name8' } ],[ { id: 9, name: 'name9' }, {} ]
]
按照 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(0, 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!!!