繁体   English   中英

比较 JavaScript 中的两个对象数组并通过比较键更新值

[英]Comparing two array of objects in JavaScript and update the values by comparing Keys

var arr1 = [{"id": "15-1", "value": {"x": {"on": false}}}, 
           {"id": "15-2", "value": {"x": {"on": true}}}, 
           {"id": "15-3", "value": {"x": {"on": false}}},
           {"id": "15-4", "value": {"x": {"on": true}}}, 
           {"id": "16-2", "value": {"x": {"on": false}}} ]

var arr2 =[{"id": "16-1", "value": {"x": {"on": true}}}, 
           {"id": "16-2", "value": {"x": {"on": true}}} ]

合并 arrays 和相似的 id 应该根据 arr2 更新它们的值
在这里,我们希望得到最终的数组

finalArray = [{"id": "15-1", "value": {"x": {"on": false}}}, 
                  {"id": "15-2", "value": {"x": {"on": true}}}, 
                  {"id": "15-3", "value": {"x": {"on": false}}},
                  {"id": "15-4", "value": {"x": {"on": true}}}, 
                  {"id": "16-1", "value": {"x": {"on": true}}},
                  {"id": "16-2", "value": {"x": {"on": true}}} ]

这是实现预期结果的解决方案:

 var arr1 = [{"id": "15-1", "value": {"x": {"on": false}}}, {"id": "15-2", "value": {"x": {"on": true}}}, {"id": "15-3", "value": {"x": {"on": false}}}, {"id": "15-4", "value": {"x": {"on": true}}}, {"id": "16-2", "value": {"x": {"on": false}}} ] var arr2 =[{"id": "16-1", "value": {"x": {"on": true}}}, {"id": "16-2", "value": {"x": {"on": true}}} ] const mergedArray = [...arr1, ...arr2]; const uniqueData = [...mergedArray.reduce((map, obj) => map.set(obj.id, obj), new Map()).values()]; console.log(uniqueData);

    var arr1 = [
  { id: "15-1", value: { x: { on: false } } },
  { id: "15-2", value: { x: { on: true } } },
  { id: "15-3", value: { x: { on: false } } },
  { id: "15-4", value: { x: { on: true } } },
  { id: "16-2", value: { x: { on: false } } },
];

var arr2 = [
  { id: "16-1", value: { x: { on: true } } },
  { id: "16-2", value: { x: { on: true } } },
];
function merge(a, b, prop) {
  var reduced = a.filter(aitem => !b.find(bitem => aitem[prop] === bitem[prop]))
  return reduced.concat(b);
}

console.log(merge(arr1,arr2,"id"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM