Javascript 通过引用查找数组中对象的索引?

Javascript 通过引用查找数组中对象的索引?,javascript,Javascript,在这种情况下,如何使用引用来查找数组中对象的索引obj变量 我想做一些类似的事情:array.findIndex((o)=>o==obj)但这是防故障的吗?o==obj意味着(如果o和obj都是object类型,o和obj是完全相同的对象(相同的实例)。两个对象==当且仅当它们引用同一实例时才相等。 因此,是的,它是“防故障的” 你可以试试 var obj={'foo':'bar'}; var数组=[obj,{'foo':'bar'}] console.log(array.findIndex(

在这种情况下,如何使用引用来查找数组中对象的索引
obj
变量


我想做一些类似的事情:
array.findIndex((o)=>o==obj)
但这是防故障的吗?

o==obj
意味着(如果
o
obj
都是
object
类型,
o
obj
是完全相同的对象(相同的实例)。两个
对象
==
当且仅当它们引用同一实例时才相等。 因此,是的,它是“防故障的”

你可以试试

var obj={'foo':'bar'};
var数组=[obj,{'foo':'bar'}]
console.log(array.findIndex((o)=>o==obj))//0
变量数组=[{'foo':'bar'},obj]
console.log(array.findIndex((o)=>o==obj))//1
变量数组=[obj,obj]
console.log(array.findIndex((o)=>o==obj))//0
变量数组=[{'foo':'bar'},{'foo':'bar'}]
console.log(array.findIndex((o)=>o==obj))/-1
console.log(obj==obj)//true
console.log(obj==={'foo':'bar'})//false

log({'foo':'bar'}==={'foo':'bar'})//false
要获取索引,可以使用它将参数与每个元素进行比较

const
obj={id:'73',foo:'bar',first:true},
数组=[obj,{id:'73',foo:'bar'}];

console.log(array.indexOf(obj));//0
“这是防故障的吗”-是。不过,您可能需要
findIndex
——如果您已经有
obj
,那么从
find
获取
obj
几乎没有什么用处。它将匹配数组中的第一项,因为这是对内存中与
obj
引用完全相同的实体的引用。它与第二项不匹配,即使它看起来相同,但它引用了内存中的另一个实体。请记住,如果重新分配
obj
,数组中的第一项仍将引用旧对象。正如@ASDFGerte所提到的,您可能希望为您的问题提供更多的上下文。只会给你一个你已经有引用的对象。你到底想做什么?
array.find((o)=>o==obj)
只会返回
obj
那么确切的目的是什么呢?应该注意的是,以这种方式比较对象只是测试引用相等性,而不是对象中存储的值
var obj =  {'foo':'bar'};

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