我正在尝试将一个对象添加到数组中,如果它尚未存在于数组中。看起来很简单但不起作用。我的阵列仍然空着。我在哪里弄错了?
var members = [];
var member = { id: 123, name: "Jane Doe" };
members.find((item) => {
if(members.length === 0 || item.id !== member.id)
members.push(member);
})
答案 0 :(得分:3)
我认为在您的代码中使用find
是正确的方法; find
期望返回一个布尔值并且
返回数组中第一个满足提供的测试函数的元素的值。否则返回undefined。
您可以将条件拉出来,然后您可以测试并将值推送到members
:
var members = [];
var member = { id: 123, name: "Jane Doe" };
if(!members.some(item => item.id === member.id)) {
members.push(member);
}
console.log(members);

答案 1 :(得分:1)
我不确定在这里使用.find()
是否是最佳方法。如果传递给它的回调返回true,.find()
将返回数组中的项。
尝试使用其他内容,例如.includes()
-
var members = [];
var member = { id: 123, name: "Jane Doe" };
console.log(members);
if(!members.includes(item => member.id === item.id) || !members.length) {
members.push(member);
}
console.log(members);

答案 2 :(得分:0)
你在成员上调用members.find(...)是空的[]; 所以find会立即退出,因为它没有任何元素。
尝试将成员初始化为以下内容:
var members = [{id:111,name:" Joe Blo"}];
然后你会在成员中看到两个元素