Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在数组中查找指定的对象索引_Javascript_Arrays - Fatal编程技术网

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");