如何查询JSON对象

3

在我的AngularJS Web应用程序中,我如何查询JSON对象?

例如,在下面的JSON对象中,我如何找到reportTypeId=3reportTypeLabel的值?

JSON:

[  
   {  
      reportTypeId:5,
      reportTypeCode:"FINREP",
      reportTypeLabel:"Financial Reporting"
   },
   {  
      reportTypeId:9000002,
      reportTypeCode:"REM HE",
      reportTypeLabel:"High Earners"
   },
   {  
      reportTypeId:3,
      reportTypeCode:"COREP LE",
      reportTypeLabel:"Large Exposures - COREP"
   }
]

1
相关问题:JSON 有查询语言吗? - Simon East
4个回答

3
你可以使用 $filter 服务并执行以下操作: var elements = $filter('filter')(arrayOfObjects,{reportTypeId: 3}); elements 将是一个包含所有具有该 'reportTypeId' 的元素的数组。我建议阅读有关 Angular 过滤器和 https://docs.angularjs.org/api/ng/service/$filter 的内容。

1
如果你要广泛使用数据操作,我强烈建议使用 JS 库,例如 underscorelodash
例如,使用 underscore:
// assuming your object is called data

var result = _.findWhere(data, {
    reportTypeId: 3
}).reportTypeLabel;
// result === 'Large Exposures - COREP'

1
你可以这样做。
<div ng-repeat="report in reports | filter:{reportTypeId:'3'}">
    {{report.reportTypeCode}}
</div>

正在使用 Fiddle 进行工作


非常感谢。如果数据量非常大,与下划线方法相比,是否会有性能问题? - Jay

0

您可以在数组上使用常规的filter函数:

var items = [
  {reportTypeId:5, reportTypeCode:"FINREP"},
  {reportTypeId:9000002, reportTypeCode:"REM HE"}
];
var onlyMatching = items.filter(function(item){ return item.reportTypeId == 3; });

或者在HTML中使用Angular 过滤器

<div ng-repeat="item in items | filter: {reportTypeId: '3'}">{{item. reportTypeLabel}}</div>

或者通过 $filter 服务使用 Angular filter

module.controller('ItemsCtrl', function($filter){
  $scope.filtered = $filter('filter')($scope.items,{ reportTypeId: '3' });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接