Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.6k views
in Technique[技术] by (71.8m points)

数据的转换方法

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...