gpt4 book ai didi

javascript - 如何比较两个对象数组并更改另一个数组中未找到的对象的属性?

转载 作者:行者123 更新时间:2023-11-30 19:59:29 28 4
gpt4 key购买 nike

我有两个对象数组

var array1 = [{ ID:"1", IsChecked : true}, 
{ ID:"2", IsChecked : true},
{ ID:"3", IsChecked : true},
{ ID:"4", IsChecked : true}]

var array2 = [{ ID:"1", IsChecked : true},
{ ID:"2", IsChecked : true}]

我想比较两个对象数组并为 array2 中找不到的那些对象更改 array1(IsChecked : false) 的属性?

这是我预期的结果:

array1 = [{ ID:"1", IsChecked : true}, 
{ ID:"2", IsChecked : true},
{ ID:"3", IsChecked : false},
{ ID:"4", IsChecked : false}]

这是我尝试过的:

array1= new Map(array1.map(o => [o.ID, o]));

array2.forEach(o => map.has(o.ID) && (o.IsChecked= map.get(o.ID).IsChecked == true ? true: false));

但这并没有给出预期的答案

最佳答案

您可以将 map 设为 array2,因为您需要使用先前收集的值来更新 array1 以决定是否更新。

var array1 = [{ ID: "1", IsChecked: true }, { ID: "2", IsChecked: true }, { ID: "3", IsChecked: true }, { ID: "4", IsChecked: true }],
array2 = [{ ID: "1", IsChecked: true }, { ID: "2", IsChecked: true }],
map = new Map(array2.map(({ ID, IsChecked }) => [ID, IsChecked]));

array1.forEach(o => {
if (map.get(o.ID)) {
return;
}
o.IsChecked = false;
});

console.log(array1);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何比较两个对象数组并更改另一个数组中未找到的对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554167/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com