是否有一种基于属性值在列表中查找对象的简单方法,而不在列表上循环?
例如,给出如下列表:
var lst = [
{
name: "foo",
value: "fooValue"
},
{
name: "bar",
value: "barValue"
}
];
是否存在某种“find
”方法,以便lst.find("name", "foo")
返回具有值为“name
”的“foo
”属性的对象?
答案 0 :(得分:29)
您可以使用$ filter服务:
angular.module('app', [])
function ParentCtrl($scope, $filter){
var lst = [{name : "foo", value : "fooValue"}, {name: "bar", value: "barValue"}, { name: 'foo', value: 'something else'}];
var newTemp = $filter("filter")(lst, {name:'foo'});
console.log(newTemp);
}
jsFiddle :http://jsfiddle.net/W2Z86/
答案 1 :(得分:5)
如果你想进行严格的比较,你需要将比较器(第三个参数)设置为true,如下所示(基于Mathew的回答):
var newTemp = $filter("filter")(lst, {name:'foo'}, true);
请参阅AngularJS网站上有关$ filter的文档:https://docs.angularjs.org/api/ng/filter/filter