数据的转换方法

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
            }
         ]    
        }
    ]

请教一下,请问有什么比较好的的方法来实现?

阅读 1.1k
1 个回答

image.png

遍历一把,然后得到没有的,然后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}))
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题