Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.0k 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 Reply

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...