今天分享一个使用 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 !!!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.