【问题标题】:Merging two arrays based on id根据 id 合并两个数组
【发布时间】:2021-08-17 16:28:43
【问题描述】:

如果我有两个数组,并且我想根据 id 使用来自 arr2 的值重写来自 arr1 的“年龄”。 我该怎么做呢?

var arr1: [{id:1 ,name:abc , age:0 },
       {id:2 ,name:abc , age:0 }, 
       {id:3 ,name:abc , age:0 }, 
       {id:4 ,name:abc , age:0 },
       {id:5 ,name:abc , age:0 }]

var arr2:[{id:2, value: 18},{ id:4, value:20}]

预期输出:

var arr1: [{id:1 ,name:abc , age:0 },
       {id:2 ,name:abc , age:18 }, 
       {id:3 ,name:abc , age:0 }, 
       {id:4 ,name:abc , age:20 },
       {id:5 ,name:abc , age:0 }]

【问题讨论】:

标签: javascript arrays merge


【解决方案1】:

你可以这样做:

let arr1 = [ { id: 1, name: 'abc', age: 0 }, { id: 2, name: 'abc', age: 0 }, { id: 3, name: 'abc', age: 0 }, { id: 4, name: 'abc', age: 0 }, { id: 5, name: 'abc', age: 0 } ];
let arr2 = [ { id: 2, value: 18 }, { id: 4, value: 20 } ];

let result = arr1.map((item)=> {
  if(arr2.map((i)=>i.id).includes(item.id)) item.age = arr2.filter((i)=>i.id===item.id)[0].value;
  return item;
});

console.log('Result: ', result);

【讨论】:

    【解决方案2】:

    正如每个人都告诉你的,有几种方法可以做到这一点,我为这个任务添加了一些可能的简单逻辑。希望能解决你的问题

        var arr1 =  [{id:1 ,name:"abc" , age:0 },
           {id:2 ,name:"abc" , age:0 }, 
           {id:3 ,name:"abc" , age:0 }, 
           {id:4 ,name:"abc" , age:0 },
           {id:5 ,name:"abc" , age:0 }]
    
    var arr2 = [{id:2, value: 18},{ id:4, value:20}]
    
    // Method 1
    for(let a = 0; a < arr1.length; a++){
      for(let b = 0; b < arr2.length; b++){
        if(arr1[a].id == arr2[b].id){
          arr1[a].age = arr2[b].value
        }
      }
    }
    console.log(arr1, 'updated Object')
    
    // Method 2
    arr2.forEach(a => {
      arr1.filter(b => {
        if(a.id == b.id){
            b.age = a.value
        }
      })
    })
    
    console.log(arr1)
    

    【讨论】:

      【解决方案3】:

      我认为最简单的方法是这样的:

      arr2.forEach(x => {
          arr1.filter(y => y.id === x.id)[0].age = x.value;
      });
      

      或者:

      arr2.forEach(x => {
          arr1.find(y => y.id === x.id).age = x.value;
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-09
        • 1970-01-01
        • 2019-09-06
        • 2022-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多