Json 角度计数出现次数

Json 角度计数出现次数,json,angularjs,angularjs-scope,angularjs-ng-repeat,Json,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我第一次使用Angular,我想我可能误解了使用这个框架来计算节点的出现和节点值是多么容易 例如,我希望能够计算一名球员的裤子尺寸是42的次数 这是angular很容易做到的吗?换句话说,框架中是否有一些计算节点值出现次数的快速调用,或者它是否需要一个带有集合和键/值对的自定义函数 function MyCtrl($scope) { $scope.players = [ {shirt: 'XXL', pants: '42', shoes: '12'}, {shirt: 'XL',

我第一次使用Angular,我想我可能误解了使用这个框架来计算节点的出现和节点值是多么容易

例如,我希望能够计算一名球员的裤子尺寸是42的次数

这是angular很容易做到的吗?换句话说,框架中是否有一些计算节点值出现次数的快速调用,或者它是否需要一个带有集合和键/值对的自定义函数

function MyCtrl($scope) {
$scope.players = [
    {shirt: 'XXL', pants: '42', shoes: '12'},
    {shirt: 'XL', pants: '38', shoes: '10'},
    {shirt: 'M', pants: '32', shoes: '9'},
    {shirt: 'XXL', pants: '42', shoes: '12'},
    {shirt: 'XXL', pants: '42', shoes: '12'},
    {shirt: 'XXL', pants: '42', shoes: '12'}
];
}

在本文中,我利用了另一个SO讨论的帮助来聚合不同的节点值。现在,我想就事件计数的最佳实践提供帮助


我建议您使用角度过滤器,根据您需要的规格限制阵列。您可以使用名称“filterFilter”将角度过滤器注入控制器,然后在该控制器内的任何位置使用它。例如,如果您想确定裤子尺寸为42的玩家数量,您可以执行以下操作:

var pantSizeOccurences = filterFilter($scope.players, { pants: '42' });
alert(pantSizeOccurences.length);
我更新了你的JSFIDLE链接。您需要将filterFilter注入控制器。这是一个帮助您解决问题的片段

var myApp = angular.module('myApp',[]);

function MyCtrl($scope, filterFilter) {
    $scope.players = [
        {shirt: 'XXL', pants: '42', shoes: '12'},
        {shirt: 'XL', pants: '38', shoes: '10'},
        {shirt: 'M', pants: '32', shoes: '9'},
        {shirt: 'XXL', pants: '42', shoes: '12'},
        {shirt: 'XXL', pants: '42', shoes: '12'},
        {shirt: 'XXL', pants: '42', shoes: '12'}
    ]; 
        var sizeFourtyTwoPants = filterFilter($scope.players, {pants: '42'});
        alert(sizeFourtyTwoPants.length);
    }
    MyCtrl.$inject = ['$scope','filterFilter'];

我建议你使用过滤,搜索等。另外,请阅读下面的链接了解更多信息:我已经更新了fiddle,尝试在实践中使用过滤器,但我一直得到错误对象不是函数。你知道这个错误是什么意思吗。我感觉到错误可能是关于“过滤器”函数或集合,但我不确定。如果你有机会,请看一下小提琴,帮我找出我可能遗漏了什么。非常感谢您的帮助/建议。在html页面中迭代裤子集合时,是否仍然可以动态过滤裤子尺寸。我正在尝试创建一个可以从网页调用的自定义过滤器,这意味着它必须在范围之外。这个作用域是我最难处理的,动态地将它传递给自定义过滤器。你的帮助帮了我很大的忙,我感谢你花时间来帮助我回答问题。好的,我明白你的意思了,你想要这个自定义过滤器做什么,或者它应该接受什么参数?看起来您的过滤器当前会返回列表中所有唯一项的裤子尺寸,我更新了您的JSFIDLE。它现在没有内部中继器。你很接近。干得好。这就是你要找的吗?