Reputation: 8273
Is there a simple way to find an object in a list based on an attribute value, without looping on the list?
For example given a list like the following :
var lst = [
{
name: "foo",
value: "fooValue"
},
{
name: "bar",
value: "barValue"
}
];
Is there some kind of "find
" method, such that lst.find("name", "foo")
would return the object which has a "name
" attribute with the value "foo
"?
Upvotes: 8
Views: 28829
Reputation: 106
If you want a strict comparison, you need to set the comparator (3rd argument) to true like the following (based on Mathew's answer):
var newTemp = $filter("filter")(lst, {name:'foo'}, true);
See the doc on $filter on AngularJS site: https://docs.angularjs.org/api/ng/filter/filter
Upvotes: 6
Reputation: 28750
You can use the $filter service:
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/
Upvotes: 30