查找对象数组中对象键 VALUES 的频率

起司

我有一组对象(警察数据,每个都是犯罪)。对象数组的长度为 1000。

每个对象都有一个键/值,例如community_area: 22.

我试图遍历对象数组以找到数组中存在的前三个社区区域。因此,如果社区区域 22、70 和 1 的犯罪率最高(每个物体发生),它将返回这三个区域。

除了创建包含犯罪的 77 个不同社区区域的数组然后比较长度之外,还有什么有效的方法可以做到这一点?

查理特

这种事情的模式相当简单。

创建一个对象,迭代数组并使用数据对象的公共属性作为新对象中的键,值将是增量计数。

然后迭代新对象并比较这些计数

var data = [
 {community_area:22},
 {community_area:22},
 {community_area:9},
 {community_area:9},
 {community_area:9},
 {community_area:5},
 {community_area:5},
 {community_area:5},
 {community_area:5},
 {community_area:1},
 {community_area:2},
 {community_area:3},
 
];

var countObj = data.reduce((a,c)=>{
   a[c.community_area] =  (a[c.community_area] || 0 ) + 1;
   return a
},{});

console.log('Community counts', countObj)

var top3 = Object.keys(countObj)
                  .sort((a,b) => countObj[b] - countObj[a] )
                  .slice(0,3)
                  .map(Number);//optional if need number vs string

console.log('Top 3', top3)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章