数据的转换方法

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

回到顶部