我可以看到这适用于搜索一个简单的数组:
var arr1 = ['a','b','c','d','e'];
var index1 = arr1.indexOf('d');
console.log("index1:" + index1); // index1:3
当我尝试为不同类型的数组做同样的事情时,它并没有找到" jane"值:
var arr2 = [{"id":0,"name":"petty"},{"id":1,"name":"jane"},{"id":2,"name":"with"}];
var index2 = arr2.indexOf('jane');
console.log("index2:" + index2); // index2:-1
抱歉 - 我意识到我可能遗漏了一些明显的东西。我搜索了SO / google以搜索多维数组,但我甚至不知道第二个例子中的数组是否是二维/多维数组,所以我可能没有找到正确的东西。
答案 0 :(得分:1)
您可以使用findIndex()
方法查找具有特定值的对象索引。
var arr = [{"id":0,"name":"petty"},{"id":1,"name":"jane"},{"id":2,"name":"with"}];
var index = arr.findIndex(e => e.name == 'jane')
console.log("index: " + index);

答案 1 :(得分:0)
首先:它不是一个多维数组。它是一个由对象组成的数组。它是一维的。要查找对象,您需要遍历数组并检查所需的密钥,例如:
arr.findIndex(function(el) { return el.name === 'jane' })
答案 2 :(得分:0)
您可以检查对象的所有值,并使用Array#findIndex
代替Array#indexOf
。
var arr2 = [{ id: 0, name: "petty" }, { id: 1, name: "jane" }, { id: 2, name: "with" }],
index2 = arr2.findIndex(o => Object.values(o).some(v => v === 'jane'));
console.log(index2);
答案 3 :(得分:0)
var arr = [{"id":0,"name":"petty"},{"id":1,"name":"jane"},{"id":2,"name":"with"}];
arr.findIndex((item)=>{return item.name=="petty"})
//output is 0