在对象列表中查找重复键的最有效方法

Gre*_*g B 4 javascript sorting

我有一个我正在迭代的对象列表.在某些时候,我进行ajax调用以向列表添加更多对象(可能多次).

如果其中一个值与现有值匹配,是否有一种有效的方法可以排除任何对象被添加到列表中?

例如:

现有清单

[
  {"value": "1", "id": "123"},
  {"value": "2", "id": "124"},
  {"value": "3", "id": "125"}
]
Run Code Online (Sandbox Code Playgroud)

排除第一个对象,因为它具有已在列表中的ID

[
  {"value": "1", "id": "123"},
  {"value": "2", "id": "234"},
  {"value": "3", "id": "235"}
]
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 5

既然你id是独一无二的,为什么不使用像map.

  • 您可以创建并保存单独的 var map = {};
  • 然后,每次有新对象进入时,请执行以下操作: map['123'] = true;

更像:

if (!map[new_id])
{
    map[new_id] = true;
    your_array.push({"value": "3", "id": "235"});
}
else
{
    // do what you want... maybe update the value
}
Run Code Online (Sandbox Code Playgroud)

因此,通过这种方式,您不会使用现有的任何对象id.