如何把对象数组进行切割,变成四个为一组的对象数组

eg:let arr = [{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3}];
如何让数组arr得到这个结果[{[{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3}]},{[{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3}]},{[{a:1,b:2,c:3},{},{},{}]}];
刚开始是9,转换成4个一组,不足的用{}空对象补全?

阅读 5.2k
3 个回答

想要几个为一组就把sliceNum改为几~~

    const arr =  [{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3}]
    const len = arr.length

    let result = []
    const sliceNum = 4

    for(let i = 0; i < len / sliceNum; i++){
        result.push(arr.slice(i * sliceNum, (i+1) * sliceNum))
    }

    for(let j = 0; j < (sliceNum - len % sliceNum); j++) {
        result[result.length - 1].push({})
    }

    console.log(result)
let arr = [{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3}];
var result = new Array()
for (var i = 0; i < arr.length; i += 4){
  var tmp = new Array()
  for (var j = 0; j < 4; j++){
    if ((i+j) >= arr.length) {
      tmp.push({})
      continue
    }
    tmp.push(arr[i+j])
  }
  result.push({tmp})
}
console.log(result)

你输出结果对象部分没有键名啊。

推荐问题