我有一组对象(警察数据,每个都是犯罪)。对象数组的长度为 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] 删除。
我来说两句