通过角度方式在对象数组中按属性查找对象

时间:2016-10-28 14:09:34

标签: javascript angularjs arrays

我有一个如下所示的数组

var myArray = [{'id':'73','name':'john'},{'id':'45','name':'Jass'}, etc.]

现在我有一个id 73如何从数组中选择这个特定的对象。我发现我可以使用grep轻松地在jQuery中执行此操作。是否有角度方式这样做?

由于大多数使用angular的用户开发应用程序总是从对象数组中获取数据(主要用于表),因此应该有一个辅助函数吗?

这样我就可以通过更新对象数组来更改行的数据和行ID。

我不想在视图中绑定它。我想操纵数据并使用函数更新数据。

例如。我有一个表格列表。如果最终用户从表中编辑一行我有对象的ID,那么在最终用户点击保存后,我需要更新数组然后再返回表列表。

4 个答案:

答案 0 :(得分:66)

你可以使用角度filter https://docs.angularjs.org/api/ng/filter/filter

在您的控制器中:

$filter('filter')(myArray, {'id':73}) 

或在您的HTML中

{{ myArray | filter : {'id':73} }}

答案 1 :(得分:39)

纯JavaScript怎么样? More about Array.prototype.filter()

var myArray = [{'id': '73', 'name': 'john'}, {'id': '45', 'name': 'Jass'}]

var item73 = myArray.filter(function(item) {
  return item.id === '73';
})[0];

// even nicer with ES6 arrow functions:
// var item73 = myArray.filter(i => i.id === '73')[0];

console.log(item73); // {"id": "73", "name": "john"}

答案 2 :(得分:4)

对于完整的M B答案,如果您想访问已从HTML数组中过滤掉的该对象的特定属性,则必须采用以下方式:

{{ (myArray | filter : {'id':73})[0].name }}

因此,在这种情况下,它将在HTML中打印john

致谢!

答案 3 :(得分:0)

对我有用的是这样的

$filter('filter')(data, {'id':10})