Javascript 使用AngularJS方式在对象数组中按其属性查找对象

Javascript 使用AngularJS方式在对象数组中按其属性查找对象,javascript,angularjs,arrays,Javascript,Angularjs,Arrays,我有一个如下的数组 var myArray = [{'id':'73','name':'john'},{'id':'45','name':'Jass'}, etc.] 现在我有了一个id73如何从数组中选择这个特定对象。我知道我可以在jQuery中轻松地做到这一点,有没有角度的方法来做到这一点 由于大多数使用angular开发应用程序的用户总是从对象数组(主要用于表格)获取数据,因此应该有一个辅助函数来实现这一点 这样我就可以通过更新object的数组,用行的ID来更改行的数据 我不想把这件事

我有一个如下的数组

var myArray = [{'id':'73','name':'john'},{'id':'45','name':'Jass'}, etc.]
现在我有了一个
id
73如何从数组中选择这个特定对象。我知道我可以在jQuery中轻松地做到这一点,有没有角度的方法来做到这一点

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

这样我就可以通过更新object的数组,用行的ID来更改行的数据

我不想把这件事牵扯进来。我想操作数据,并用函数更新数据


比如说。我有一张桌子清单。如果最终用户编辑了表中的一行,那么在最终用户点击save之后,我需要更新数组,然后返回到表列表

您可以使用angular的
过滤器

在控制器中:

$filter('filter')(myArray, {'id':73}) 
或者在你的HTML中

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

普通JavaScript怎么样

var myArray=[{'id':'73','name':'john'},{'id':'45','name':'Jass'}]
var item73=myArray.filter(函数(项){
return item.id=='73';
})[0];
//ES6箭头功能更出色:
//var item73=myArray.filter(i=>i.id=='73')[0];

console.log(项目73);//{“id”:“73”,“name”:“john”}
要获得完整的
mb
答案,如果您想访问已从HTML数组中筛选出的此对象的特定属性,您必须以以下方式执行:

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

因此,在本例中,它将在HTML中打印
john


问候

对我有效的解决方案如下

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

感谢+1我正在考虑仅在带有标记的视图模式下应用过滤器,也感谢在控制器中使用过滤器的想法。请注意,为了使用此方法,我们需要在控制器中传递
$filter
。值得注意的是,上面的代码将根据作为子字符串的ID进行过滤。因此,在id为73的情况下进行过滤也会找到733、4573、173等。要进行严格的比较,必须根据文档传递第三个比较器参数“true”。有没有办法将结果存储在HTML中?我需要一些循环中的过滤器结果。因此,这将减少每次循环迭代中的过滤过程。顺便说一句,我是新手。谢谢。谢谢你的帮助。我已经看到了JavaScript过滤方法,我正在寻找有角度的方法。改用
FIND
怎么样?@Dementic
FIND
在编写答案时,Chrome对它的支持还是很新鲜的,例如IE中根本就没有<代码>过滤器另一方面是.IE?那是什么?:)@JaredSmith我正在寻找任何角度辅助函数(比如angular.isNumber),而不是javascript默认的数组对象方法。这毫无意义。为什么您需要一个框架帮助函数来替换一直支持到IE9的本机方法?除非您给出其他原因,否则这只是一个XY问题。我可以理解,如果您已经在使用angular,为什么您不希望包含jquery,但是
。filter
是本机的,并且得到了很好的支持。如果你能给出一个令人信服的理由,说明为什么必须用棱角来解决这个问题,而仅仅是棱角,我将撤回投票。OP想要一个答案。目标受骗者没有回答这个问题。就像jQuery解决方案不回答任何问题一样。