Javascript奇怪的对象数组和indexOf
不太明白这里发生了什么。给定阵列arr: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
[
{
"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中的对象是相同的对象,并且是相同的引用,而不仅仅是相同的值,则它们是相等的。