Javascript奇怪的对象数组和indexOf

Javascript奇怪的对象数组和indexOf,javascript,arrays,object,indexof,Javascript,Arrays,Object,Indexof,不太明白这里发生了什么。给定阵列arr: [ { "first_name": "Dan", "last_name": "Woodson", "id": 1 }, { "first_name": "Jen", "last_name": "Woodson", "id": 2 }, { "first_name": "Yoshi", "l

不太明白这里发生了什么。给定阵列arr:

[
    {
        "first_name": "Dan",
        "last_name": "Woodson",
        "id": 1
    },
    {
        "first_name": "Jen",
        "last_name": "Woodson",
        "id": 2
    },
    {
        "first_name": "Yoshi",
        "last_name": "Woodson",
        "id": 3
    }
]
以及对象obj:

{
    "first_name": "Yoshi",
    "last_name": "Woodson",
    "id": 3
}
为什么arr.indexOfobj会返回-1,尤其是因为我在函数前面使用数组的“id”参数从数组中检索了对象?

array.indexOf仅在提供的对象与您放入的对象完全相同的情况下才对对象起作用

精确副本不足,必须是完全相同的对象,即数组中必须有某个对象,以便:

arr[i] === obj

您需要显示如何检索对象。

我想查看检索功能,但很可能您没有使用相同的引用。因为以下是事实:

var a = {id: 3};
var b = [a];
b.indexOf(a); // 0
a.id = "not three";
b.indexOf(a); // still 0
但是,以下内容将中断:

var a = {id: 3};
var b = [{id: 3}];
b.indexOf(a); // -1 not the same object

你在函数的前面是什么意思?您需要向我们展示您编写的失败代码,而不仅仅是一些JSON。您可以发布您正在使用的实际代码,并/或将其放在FSFIDLE上吗?这是因为{a:12}==={a:12}为false。如果JavaScript中的对象是相同的对象,并且是相同的引用,而不仅仅是相同的值,则它们是相等的。