给出类似
的数据var data = [
{
"a" : "x"
... (other properties)
},
{
"a" : "x"
... (other properties)
},
{
"a" : "y"
... (other properties)
},
]
最常见的“a” - 属性值的计数为2,(对于“x”)。
现在,从data
得到这个最简洁的方法是什么?
我假设可能有一种很好的方法来生成不同计数的数组,在这种情况下是[ 2 , 1 ]
,然后在此运行Math.max(...array)
?
但我似乎无法找到一种干净的方式来做到这一点?
答案 0 :(得分:1)
var data = [{
a: "x"
},
{
a: "x"
},
{
a: "y"
},
]
var countPropertyValues = {};
data.forEach(function(obj) {
if (countPropertyValues.hasOwnProperty(obj.a)) {
countPropertyValues[obj.a]++;
} else {
countPropertyValues[obj.a] = 1;
}
});
console.log(countPropertyValues);
var maxPropertyOccurence=0;
var maxPropertyValue;
for(var property in countPropertyValues){
if(countPropertyValues[property]>maxPropertyOccurence){
maxPropertyOccurence=countPropertyValues[property];
maxPropertyValue=property;
}
}
console.log(maxPropertyOccurence);
console.log(maxPropertyValue);