我有一个Javascript对象数组,我想找到数组元素(对象)的索引,其中特定对象的字段与我的搜索条件匹配。
即,数组看起来像
[{id:1, saved:0, name: "name1"}, {id:26, saved:0, name: "name2"},
{id:3, saved:0, name: "name3"}, {id:15, saved:0, name: "name4"}]
我想找到元素的id字段等于的元素的索引,比如说15。 我正在使用角度和jquery。
答案 0 :(得分:6)
你必须迭代,这是一个非常简单的例子
var index = null;
for (var i=0; i<array.length; i++) {
if ( array[i].id == 15 ) {
index = i;
break;
}
}
如果您只想返回可以执行的对象
,那么就可以获得索引var obj = array.filter(function(obj) {
return obj.id == 15;
}).shift();
答案 1 :(得分:2)
array.filter是实现这一目标的更优雅的方法:
var arrr = [{id:1, saved:0, name: "name1"}, {id:26, saved:0, name: "name2"},
{id:3, saved:0, name: "name3"}, {id:15, saved:0, name: "name4"}];
return arrr.filter( function( value ){ return value.id == 15; })[0];
答案 2 :(得分:2)
有多种方法可以做到这一点。
您可以遍历数组并进行搜索。
var search = 15;
for(var index=0; index<input.length; index++) {
if(input[index].id == search) {
//Do whatever you want to do with this index.
}
}
或者您可以先创建一个查找
var lookup = {};
for(var index=0; index<input.length; index++) {
var element = input[index];
lookup[element.id] = element;
lookup[element.id].index = index;
}
现在,在搜索术语的每个后续查找中,您都可以执行以下操作
var search = 15;
if(lookup[search]) {
var index = lookup[search].index;
}
答案 3 :(得分:2)
使用ES6,您可以使用Array#findIndex
findIndex()
方法返回数组中第一个满足所提供测试函数的元素的索引。否则返回-1
。
var array = [{ id: 1, saved: 0, name: "name1" }, { id: 26, saved: 0, name: "name2" }, { id: 3, saved: 0, name: "name3" }, { id: 15, saved: 0, name: "name4" }],
index = array.findIndex(({ id }) => id === 15);
console.log(index);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 4 :(得分:0)
试试这个:
$.each(json.yourrootjson, function(i, v) {
if (v.id == "15") {
alert(v.id);
alert(v.name);
alert(v.saved);
return;
}
});
答案 5 :(得分:0)
这是一种非常基本的方法。当然,你不想像我一样静态地使用变量key
和match
,但我必须更多地了解你的代码以帮助你。
var array = [{id:1, saved:0, name: "name1"}, {id:26, saved:0, name: "name2"},
{id:3, saved:0, name: "name3"}, {id:15, saved:0, name: "name4"}]
var key = 'id';
var match = 15;
array.forEach(function(elem, i) {
if (elem[key] === match) {
alert(i);
}
});
答案 6 :(得分:0)
有很多源,但是while循环似乎是迭代数组的最快方法。或者,在我看来,Array.map()是最干净的方式,但事实证明它相当慢。
var array = []; // your array
var len = array.length;
while (len-- ) {
if ( array[i].id == 15 ) {
console.log(array[i])
}
}