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

问题描述 投票:1回答:1

我想推送的对象只有唯一的 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 需要是唯一的。我现在用的上面的方法在我的情况下是行不通的。

谢谢你的建议

javascript arrays
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.