如何查询JSON对象

时间:2016-01-19 17:31:28

标签: angularjs json json-deserialization

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

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

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"
   }
]

4 个答案:

答案 0 :(得分:3)

您可以要求$ filter服务并执行

var elements = $filter('filter')(arrayOfObjects,{reportTypeId: 3});

元素将是具有'reportTypeId'的所有元素的数组 我建议阅读有关角度滤镜和https://docs.angularjs.org/api/ng/service/ $ filter

的内容

答案 1 :(得分:1)

如果您要广泛使用数据操作,我强烈建议您使用JS库,例如underscorelodash

例如,使用下划线

// assuming your object is called data

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

答案 2 :(得分:1)

你可以这样做

<div ng-repeat="report in reports | filter:{reportTypeId:'3'}">
    {{report.reportTypeCode}}
</div>

工作Fiddle

答案 3 :(得分:0)

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

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

或html中的角度filter

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

或有角度的filter$filter服务

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