添加对象到数组不起作用

时间:2017-07-16 02:10:00

标签: javascript

我正在尝试将一个对象添加到数组中,如果它尚未存在于数组中。看起来很简单但不起作用。我的阵列仍然空着。我在哪里弄错了?

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


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

3 个答案:

答案 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"}];

然后你会在成员中看到两个元素