检查哈希数组是否包含哈希

Emu*_*Emu 1 javascript arrays object ecmascript-6 lodash

假设我有一个变量,例如:

var vendors = [
    {
      Name: 'Magenic',
      ID: 'ABC'
     },
    {
      Name: 'Microsoft',
      ID: 'DEF'
    }
];

var v1 = {
      Name: 'Magenic',
      ID: 'ABC'
     };
Run Code Online (Sandbox Code Playgroud)

当我运行以下代码来使用indexOf进行搜索时v1vendors总是返回-1

console.log(vendors.indexOf(v1));
Run Code Online (Sandbox Code Playgroud)

即使v1存在于vendors数组中,它也会返回 -1。使用js在对象数组中查找对象索引的正确方法是什么?

我可以使用循环,但成本很高:(

GG.*_*GG. 5

您可以使用findIndex

var vendors = [{ Name: 'Magenic', ID: 'ABC' }, { Name: 'Microsoft', ID: 'DEF' }];

console.log(vendors.findIndex(v => v.ID === 'ABC')) // 0
console.log(vendors.findIndex(v => v.ID === 'DEF')) // 1
Run Code Online (Sandbox Code Playgroud)