我有这样的数据模型:
var array = [{id:1, name:"foo"}, {id:2, name:"bar"}, {id:3 name:"september"}];
我想遍历数组并查看id:3是否存在我该怎么做?
答案 0 :(得分:9)
只需使用AngularJS filter,这些就是为此目的而制作的:
var results = $filter('filter')(array, {id : 3}, true);
results
将包含一个对象数组(可能不止一个),其属性id
等于3
。
如果results
的长度为零,则没有与过滤器匹配的元素
如果您知道,只有一种可能的结果,您可以使用results[0]
直接检索它。
使用过滤器的优点是,您可以通过扩展过滤器表达式{id : 3}
轻松过滤多个属性值。
干杯,
答案 1 :(得分:2)
这比js问题更像是一个问题。如果您使用像lodash这样的库,这非常简单:
_.findWhere(array, {'id': 3})
在普通的javascript中,这并不复杂。这是一个EcmaScript 5解决方案,它使用了 some 功能:
array.some(function(elem) {
return elem.id === 3;
});
答案 2 :(得分:1)
很遗憾,您在,
id:3
它更像是一个在Array上循环的javaScript,而不是AngularJS方式,
var array = [{id:1, name:"foo"}, {id:2, name:"bar"}, {id:3, name:"september"}];
for(var i in array){
if(array[i].id === 3){
console.log("found 3");
//do something here.
}
}
答案 3 :(得分:0)
你甚至不需要lodash。原生javascript:
(array.filter(function(a) {return a.id === 3})
将返回一个数组,该数组只包含id为3的元素(如果有的话),否则为空数组。
答案 4 :(得分:0)
您可以使用纯JavaScript执行此操作:
array.find(function(element){
if(element.id == 3) return true;
})