数据的转换方法
let data = [{
type:'A',
list: [
{
id: 1,
price: 20,
num: 23
},
{
id: 3,
price: 10,
num: 21
},
{
id: 5,
price: 88,
num: 9
}
]
},
{
type:'B',
list: [
{
id: 3,
price: 20,
num: 23
},
{
id: 4,
price: 10,
num: 21
}
]
},
{
type:'C',
list: [
{
id: 2,
price: 20,
num: 23
},
{
id: 5,
price: 10,
num: 21
}
]
}
]
let arr = [1, 2, 3, 4, 5]
有两个数组,data中的 每个子对象的list中每项的id与数组arr对应。比如:data中的第一个子对象的list中,如果id没有2和4,就往这个list 中添加两个对象,这两个对象的id分别为2和4,这两个对象的其他属性均为0; data中第二个子对象的list中,没有id为1,2和5的对象,则就往这个list中添加3个对象,这三个对象的id分别为1,2,和5,其他属性也均为0, data中的第三个子对象的list中,没有id为1,3和4的对象,则也往这个list中添加3个对象,3个对象的id分别为1,3,4,其他属性也为0。
就得到data2一样的数据结构:
let data2 = [{
type:'A',
list: [
{
id: 1,
price: 20,
num: 23
},
{
id: 3,
price: 10,
num: 21
},
{
id: 5,
price: 88,
num: 9
},
{
id: 2,
price: 0,
num: 0
},
{
id: 4,
price: 0,
num: 0
}
]
},
{
type:'B',
list: [
{
id: 3,
price: 20,
num: 23
},
{
id: 4,
price: 10,
num: 21
},
{
id: 1,
price: 0,
num: 0
},
{
id: 2,
price: 0,
num: 0
},
{
id: 5,
price: 0,
num: 0
},
]
},
{
type:'C',
list: [
{
id: 2,
price: 20,
num: 23
},
{
id: 5,
price: 10,
num: 21
},
{
id: 1,
price: 0,
num: 0
},
{
id: 3,
price: 0,
num: 0
},
{
id: 4,
price: 0,
num: 0
}
]
}
]
请教一下,请问有什么比较好的的方法来实现?
回答
遍历一把,然后得到没有的,然后push进去。
data.forEach(v=>{ set = new Set(arr);
v.list.forEach(v=>set.delete(v.id))
set.forEach(id=>v.list.push({id,price:0,num:0}))
})
以上是 数据的转换方法 的全部内容, 来源链接: utcz.com/a/64665.html