使用多个键搜索数组

时间:2017-08-22 10:55:49

标签: javascript arrays

我可以看到这适用于搜索一个简单的数组:

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以搜索多维数组,但我甚至不知道第二个例子中的数组是否是二维/多维数组,所以我可能没有找到正确的东西。

4 个答案:

答案 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