[英]Javascript: Finding index of an object in an array, based on a value within a nested array on the objects
[英]Find index of javascript “array of objects” based on object field value
我有一个对象的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的元素索引。我正在使用angular和jquery。
您必须进行迭代,这是一个非常简单的示例
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();
array.filter是JavaScript实现这一目标的更优雅的方法:
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];
有多种方法可以做到这一点。
您可以遍历数组并进行搜索。
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;
}
使用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);
.as-console-wrapper { max-height: 100% !important; top: 0; }
尝试这个:
$.each(json.yourrootjson, function(i, v) {
if (v.id == "15") {
alert(v.id);
alert(v.name);
alert(v.saved);
return;
}
});
这是一种非常基本的方法。 当然,您将不想像我一样使用变量key
match
静态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);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.