我想将仅具有唯一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
必须是唯一的。在我的情况下,我上面使用的方法不起作用。
谢谢
答案 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);