首页 > 解决方案 > 通过引用查找数组中对象的索引?

问题描述

var obj =  {'foo':'bar'};

var array =  [obj, {'foo':'bar'}]

如何通过在这种情况下使用引用obj变量找到数组中对象的索引?

我会考虑做类似的事情:array.findIndex((o) => o === obj)但这是失败的证明吗?

标签: javascript

解决方案


o === obj表示(如果oobj都是 type objecto并且obj是完全相同的对象(相同的实例)。当且仅当它们引用相同的实例时,两个objects===相等。所以是的,它是“故障证明”。

你可以试试

var obj = {'foo':'bar'};

var array = [obj, {'foo':'bar'}]
console.log(array.findIndex((o) => o === obj)) // 0

var array = [{'foo':'bar'}, obj]
console.log(array.findIndex((o) => o === obj)) // 1

var array = [obj, obj]
console.log(array.findIndex((o) => o === obj)) // 0

var array = [{'foo':'bar'}, {'foo':'bar'}]
console.log(array.findIndex((o) => o === obj)) // -1

console.log(obj === obj) // true
console.log(obj === {'foo':'bar'}) // false
console.log({'foo':'bar'} === {'foo':'bar'}) // false


推荐阅读