gpt4 book ai didi

javascript - 如何检查数组中是否存在对象

转载 作者:行者123 更新时间:2023-11-30 11:11:13 24 4
gpt4 key购买 nike

如何在 javascript 中检查数组中是否存在对象?

这是一个简单的例子。假设我有一个如下所示的数组:

let array = [{"zone": "WV", "zip": "56855"}, 
{"zone": "SC", "zip": "28031"},
{"zone": "TN", "zip": "84755"}]

现在我想向我的 array 添加一个对象,但前提是它不存在。

例如尝试添加这个对象会失败:

let addMe = [{"zone": "SC", "zip": "28031"}, {"zone": "TN", "zip": "84755"}]

但这会成功

[{"zone": "SC", "zip": "55555"}, {"zone": "TN", "zip": "88888"}]

显然 addMe 是一个数组,需要逐步执行,在某些对象上失败,在其他对象上成功。

我正在尝试使用 filter 但它无法正常工作。而且我必须单步执行原始数组以及我要添加的对象,创建嵌套的 for 循环,这非常令人困惑。这是我的尝试:

array.filter(function(item){
addMe.forEach(function(element){
if(item.zone != element.zone && zone.zip!= element.zip){
array.push(element);
}
});
});

有没有更好的办法?

最佳答案

另一种方法是使用 some 函数来捕获至少一个不是every 值都相等的对象。

let array = [{"zone": "WV", "zip": "56855"}, {"zone": "SC", "zip": "28031"}, {"zone": "TN", "zip": "84755"}],
addMe = [{"zone": "SC", "zip": "28031"}, {"zone": "TN", "zip": "84755"}];

addMe.forEach(o => {
if (!array.some(a => Object.keys(a).every(k => a[k] === o[k]))) array.push(o);
});

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

关于javascript - 如何检查数组中是否存在对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53549021/

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