问:将一个数组arr , id 有三种状态,把id为null 的和id相同的第一个对象放在一个新的数组里 ,arr中(除id相同的第一个对象)id相同的后几个对象放在id相同的第一个对象的list中
arr = [{
id: 1,
list: []
},
{
id: 1,
list: []
},
{
id: 1,
list: []
},
{
id: 2,
list: []
},
{
id: 2,
list: []
},
{
id: 2,
list: []
},
{
id: 3,
list: []
},
{
id: 3,
list: []
},
{
id: 3,
list: []
},
{
id: null,
list: []
},
{
id: null,
list: []
},
{
id: null,
list: []
},
{
id: null,
list: []
},
],
js上代码
let obj = {}
arr.forEach((item)=>obj[item.id]=item)
let a = []
for(let key in obj){
if(obj[key].id !== null){
a.push(obj[key])
}
}
let b = a
for(var j = 0 ; j<a.length ; j++){
for(var i = 0 ; i<arr.length;i++){
if(arr[i].id == a[j].id){
b[j].list.push(this.arr[i])
}
}
}
for(var i = 0 ; i<arr.length;i++){
if(arr[i].id == null){
b.push(arr[i])
}
}
for(var s = 0 ; s<b.length;s++){
if(b[s].id != null){
b[s].list.pop()
}
}
最后console.log(b)打印出来的结果就是想要的值啦