Javascript 在数组中查找指定的对象索引
我有以下代码:Javascript 在数组中查找指定的对象索引,javascript,arrays,Javascript,Arrays,我有以下代码: var items = [{ value: 1, text: "one" }, { value: 2, text: "two" }, { value: 3, text: "three" }]; console.log(items.indexOf({ value: 2, text: "two" })); 我在控制台中得到这个结果: -1 但是我希望得到对象索引,我应该怎么做?您必须迭代并检查: var index = -1; for (var i = 0; i < ite
var items = [{ value: 1, text: "one" }, { value: 2, text: "two" }, { value: 3, text: "three" }];
console.log(items.indexOf({ value: 2, text: "two" }));
我在控制台中得到这个结果:
-1
但是我希望得到对象索引,我应该怎么做?您必须迭代并检查:
var index = -1;
for (var i = 0; i < items.length; i++) {
if (items[i].value == 2 && items[i].text == "two") {
index = i;
break;
}
}
console.log(index);
var指数=-1;
对于(变量i=0;i
有点棘手,但它可以帮助您:
Javascript的
Array.indexOf
不比较对象的属性。它只是。而<代码>==运算符不会考虑在第二行中创建的对象与您在if ({"a":1} === {"a":1}) alert("equal"); else alert("not equal");
这两个物体不相等。因此,唯一的解决方案是迭代数组的所有项,并将每个项的属性与新对象进行比较(在tymeJV的回答中提供)
firefox中也有一个内置的只读功能,使这项任务变得更容易。不幸的是
Array.indexOf
不能以这种方式工作,主要是因为两个对象从来都不一样。这不起作用,因为如果使用严格的比较。请留下评论…请记住,这假设属性与传入的对象和正在检查的对象的顺序相同(也请记住对象是无序的)@tymeJV,是的,谢谢,我忘记了。看起来这不是真正安全的解决方案。对我来说也是正确的。我甚至在回答中提到了它!
console.log(items.indexOfObj({ value: 2, text: "two" }));
if ({"a":1} === {"a":1}) alert("equal"); else alert("not equal");