如何通过比较javascript中的两个对象数组来更新特定属性?
我有下面两个javascript中的对象数组如何通过比较javascript中的两个对象数组来更新特定属性?,javascript,arrays,Javascript,Arrays,我有下面两个javascript中的对象数组 data1 = [ { id: 123, option: "ABC", value: "123" }, { id: 234, option: "DFG", value: "234" } ]; data2 = [ { id: 123, option: "ABC", value: "123" } ]; 当id与对象的第二个数组匹配时,我只想在对象的第一个数
data1 = [
{
id: 123,
option: "ABC",
value: "123"
},
{
id: 234,
option: "DFG",
value: "234"
}
];
data2 = [
{
id: 123,
option: "ABC",
value: "123"
}
];
当id与对象的第二个数组匹配时,我只想在对象的第一个数组中将该特定id的值(属性)设置为0。如下所示一旦ID123在两个数组中都匹配,那么data1数组应该如下所示
data1 = [
{
id: 123,
option: "ABC",
value: "0"
},
{
id: 234,
option: "DFG",
value: "234"
}
];
如何实现上述场景?您可以使用
foreach
,这将改变您需要的第一个数组,或者您也可以使用map
(但它将生成新数组):
var data1=[{id:123,选项:“ABC”,值:“123”},{id:234,选项:“DFG”,值:“234”}];
var data2=[{id:123,选项:“ABC”,值:“123”}];
data1.forEach(k=>{
ispresent=data2.find(p=>p.id==k.id);
如果(ispresent)k.value='0'
});
console.log(data1)
您可以从第二个数组创建一组对象id,然后从第一个数组创建新对象,如果对象的id在该集合内,则更改值
属性(使用.has()
进行检查):
constdata1=[{id:123,选项:“ABC”,值:“123”},{id:234,选项:“DFG”,值:“234”}];
constdata2=[{id:123,选项:“ABC”,值:“123”}];
const idSet=新集合(data2.map(o=>o.id));
const res=data1.map(o=>({…o,value:idSet.has(o.id)-“0”:o.value}));
控制台日志(res)
您可以将data2的id保存在集合中,并在data1上迭代,如果其id在集合中,则更改每个项的值:
let data1=[{id:123,选项:“ABC”,值:“123”},{id:234,选项:“DFG”,值:“234”}];
让data2=[{id:123,选项:“ABC”,值:“123”}];
设集合=新集合();
for(设i=0;i