添加对象到数组不工作

问题描述:

我想添加一个对象到数组,如果它不在数组中。看起来很简单,但不工作。我的数组仍然空着。我在哪里犯错误?添加对象到数组不工作

var members = []; 
var member = { id: 123, name: "Jane Doe" }; 


members.find((item) => { 
    if(members.length === 0 || item.id !== member.id) 
    members.push(member); 
}) 

我不认为这是使用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);

+0

是的,它与一个更正工作。条件应该是'item.id!== member.id',因为我们要确保成员不在数组中。感谢您的帮助。 – Sam

+0

如果使用'item.id!== member.id',我会将否定运算符放到前面,它在逻辑上是相同的,那么您可能需要使用'every'而不是'some'来保持逻辑等效。 – Psidom

+1

我现在明白了。乍一看我错过了。再次感谢。 – Sam

要调用members.find(...)上成员是空的[]; 所以找到会立即退出,因为它没有任何元素。

尝试初始化成员是这样的:

变种成员= [{ID:111,名称: “乔BLO”}];

然后你会看到在会员

两个要素,我不知道,如果使用.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);