如何防止添加重复的arraylist对象值?

Opi*_*ton 1 javascript arrays ecmascript-6

我有一个问题,阻止将新对象添加到数组中,该数组具有与数组中对象的现有元素相同的 id 值。我的数组是这样的:

var arr = [
       {id:1, name:'Fabricio'},
       {id:2, name:'Leontina'},
       {id:3, name:'Rodrigo'}];
Run Code Online (Sandbox Code Playgroud)

如果我想添加这样的对象{id:2; name:'Evander'},由于 id 而无法完成。

Jon*_*lms 9

您可以检查 id 是否在数组中,如下所示:

if(!arr.some(el => el.id === 2))
  arr.push({ id: 2, name: "Evander" });
Run Code Online (Sandbox Code Playgroud)

但实际上这是 Map 的一个很好的用例:

const users = new Map([
 [1, { name: "one" }],
 [2, { name: "two" }]
]);
Run Code Online (Sandbox Code Playgroud)

所以你可以很容易地检查一个 id 是否已经在恒定时间内存在:

if(!users.has(2))
  users.set(2, { name: "newtwo" });
Run Code Online (Sandbox Code Playgroud)