angularjs计算对象数组中的重复值

时间:2015-04-09 20:45:13

标签: arrays json angularjs

我正在使用AngularJS。 我有一个像这样的对象数组:

 $scope.documents =
   [
        {
            "id": "221",
            "activate": "t"
        },
        {
            "id": "1",
            "activate": "t"        
        },
        {
            "id": "2",
            "activate": "t"        
        },
        {
            "id": "221",
            "activate": "t"        
        },
        {
            "id": "5",
            "activate": "t"        
        },
        {
            "id": "221",
            "activate": "t"        
        },
        {
            "id": "221",
            "activate": "t"        
        },
        {
            "id": "7",
            "activate": "t"        
        },
        {
            "id": "8",
            "activate": "t"        
        },
        {
            "id": "9",
            "activate": "t"        
        },
        {
            "id": "221",
            "activate": "t"        
        }

    ]

我需要一个angularjs函数来计算对象数组中重复值的数量。

这样的事情:

  $scope.count = function(param) {

    angular.forEach($scope.preguntas, function(value, key) {
        if (value.id == param){
        ........
        ........
        }
    });

  };

但我不确定我该怎么办。

我希望结果是这样的:

count(221);
5

你们有什么建议吗?

2 个答案:

答案 0 :(得分:1)

只需在if语句中递增count变量并将其返回。

$scope.count = function(param) {
  var count = 0;

  $scope.documents.forEach(function(document) {
      if(document.id === param.toString() {
        count++;
      }
  });

  return count;
};

你的标记:

<div>{{count(221)}}</div>

答案 1 :(得分:0)

如果你使用lo-dash,你可以这样做:

_.countBy(documents, 'id')['221']

https://lodash.com/docs#countBy