添加对象到数组不工作
问题描述:
我想添加一个对象到数组,如果它不在数组中。看起来很简单,但不工作。我的数组仍然空着。我在哪里犯错误?添加对象到数组不工作
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);
答
要调用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);
是的,它与一个更正工作。条件应该是'item.id!== member.id',因为我们要确保成员不在数组中。感谢您的帮助。 – Sam
如果使用'item.id!== member.id',我会将否定运算符放到前面,它在逻辑上是相同的,那么您可能需要使用'every'而不是'some'来保持逻辑等效。 – Psidom
我现在明白了。乍一看我错过了。再次感谢。 – Sam