根据Angular JS中的属性值在列表中查找对象

Find an object in a list based on attribute value in Angular JS

本文关键字:列表 查找 对象 属性 Angular JS 根据      更新时间:2024-02-28

有没有一种简单的方法可以根据属性值在列表中查找对象,而不在列表上循环?

例如,给定如下列表:

var lst = [
  {
    name: "foo", 
    value: "fooValue"
  }, 
  {
    name: "bar", 
    value: "barValue"
  }
];

是否存在某种"find"方法,使得lst.find("name", "foo")将返回具有值为"foo"的"name"属性的对象?

您可以使用$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/

如果你想要一个严格的比较,你需要将comparator(第三个参数)设置为true,如下所示(基于Mathew的答案):

var newTemp = $filter("filter")(lst, {name:'foo'}, true);

请参阅AngularJS网站上$filter上的文档:https://docs.angularjs.org/api/ng/filter/filter