如何在添加之前检查特定对象是否已存在于数组中

oli*_*ier 5 javascript ecmascript-6

我有这个数组:

[{"name": "Olvier", "id": 123 }, {"name": "Olvier", "id": 124 }]
Run Code Online (Sandbox Code Playgroud)

现在我的目标是防止再次将相同的对象添加到数组中:

{"name": "Olvier", "id": 123 }
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Cam*_*ntz 5

如果您的对象是较早创建的并且与数组中的对象具有相同的引用,则可以使用 indexOf:

var myObj = { a: 'b' };
myArray.push(myObj);
var isInArray = myArray.indexOf(myObj) !== -1;
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用 find 进行检查:

var isInArray = myArray.find(function(el){ return el.id === '123' }) !== undefined;
Run Code Online (Sandbox Code Playgroud)