Javascript AngularJS在数据集中显示最大重复次数属性
我正在使用Javascript AngularJS在数据集中显示最大重复次数属性,javascript,angularjs,Javascript,Angularjs,我正在使用ng repeat来显示数据,我希望能够识别在每个项目中出现次数最多的名称(或者如果是并列的,则显示多个结果) 我不知道一个角度指令,将执行这个开箱即用。有吗 样本数据集: { item1: [{ name: 'Bob', date: '2015-12-17' }, { name: 'Steve', date: '2015-12-17' }, { name: 'Bob', date: '2015-12-15' }, {
ng repeat
来显示数据,我希望能够识别在每个项目中出现次数最多的名称(或者如果是并列的,则显示多个结果)
我不知道一个角度指令,将执行这个开箱即用。有吗
样本数据集:
{
item1: [{
name: 'Bob',
date: '2015-12-17'
}, {
name: 'Steve',
date: '2015-12-17'
}, {
name: 'Bob',
date: '2015-12-15'
}, {
name: 'Steve',
date: '2015-12-13'
}, {
name: 'Bob',
date: '2015-12-10'
}],
item2: [{
name: 'Rachel',
date: '2015-12-14'
}, {
name: 'Steve',
date: '2015-12-17'
}, {
name: 'Bob',
date: '2015-12-15'
}]
}
我认为您可以使用过滤器来完成此操作,下面是一个示例: 关于自定义筛选器:
angular.module('App', []).controller(MainController);
angular.module('App').filter('checkmark', function() {
return function(input) {
console.log(input);
var max = {
};
var maxCount = 0;
var winner = {};
input.forEach(function(value, index) {
if (!max[value.name]) {
//max.name = value.name;
max[value.name] = 1;
winner = value;
maxCount = 1;
} else {
max[value.name]++;
if (max[value.name] > maxCount) {
winner = value;
maxCount = max[value.name];
}
}
});
//console.log(max);
console.log(winner);
return winner.name + "(" + maxCount + ")";
};
});
function MainController($scope) {
$scope.data = {
item1: [{
name: 'Bob',
date: '2015-12-17'
}, {
name: 'Steve',
date: '2015-12-17'
}, {
name: 'Bob',
date: '2015-12-15'
}, {
name: 'Steve',
date: '2015-12-13'
}, {
name: 'Bob',
date: '2015-12-10'
}],
item2: [{
name: 'Rachel',
date: '2015-12-14'
}, {
name: 'Steve',
date: '2015-12-17'
}, {
name: 'Bob',
date: '2015-12-15'
}]
};
}