假设我有一个类似的变量:

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

var v1 = {
      Name: 'Magenic',
      ID: 'ABC'
     };


当我运行以下代码以使用indexOf在v1中搜索vendors时,它始终返回-1

console.log(vendors.indexOf(v1));


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

我可以使用循环,但是它很昂贵:(

最佳答案

您可以使用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

10-06 02:22