在JAVASCRIPT中将唯一对象推入数组

时间:2020-05-12 13:55:16

标签: javascript arrays

我想将仅具有唯一id1的对象推入数组。

Example:

let array = [],
    obj = {},
    access = true

if(access){
   obj['id1'] = 1
   obj['id2'] = 2
   if(array.indexOf(obj.id1) == -1){
       array.push(obj)
   }
}

console.log(array);

在上面的示例中,我尝试为obj添加值,然后将obj推入array。但是obj.id1必须是唯一的。在我的情况下,我上面使用的方法不起作用。

谢谢

1 个答案:

答案 0 :(得分:1)

正如Taplar所说,indexOf将在另一个数组中查找您传入的事物的第一个实例。这是行不通的,因为无论如何直接在数组中没有id的实例。

使用find函数,该函数允许您传递比较函数,从而可以定义匹配项。

let initial = [{id:1}, {id:2}, {id:1}];
let result = initial.reduce((acc, item) => 
{
  if(!acc.find(other => item.id == other.id))
  {
    acc.push(item);
  }
  
  return acc;
}, []);

console.log(result);