Javascript 查找对象数组中对象键值的频率
我有一系列的警察数据,每一个都是犯罪。对象数组的长度为1000 每个对象都有一个键/值,例如community_area:22 我试图遍历对象数组,以找到数组中存在的前三个社区区域。因此,如果社区区域22、70和1的犯罪率最高,那么它将返回这三个区域Javascript 查找对象数组中对象键值的频率,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有一系列的警察数据,每一个都是犯罪。对象数组的长度为1000 每个对象都有一个键/值,例如community_area:22 我试图遍历对象数组,以找到数组中存在的前三个社区区域。因此,如果社区区域22、70和1的犯罪率最高,那么它将返回这三个区域 除了创建77个不同社区区域的阵列,然后比较长度之外,还有什么更有效的方法 这类事情的模式相当简单 创建一个对象,迭代数组,并使用数据对象的公共属性作为新对象中的键,值将是增量计数 然后迭代新对象并比较这些计数 风险值数据=[ {社区地区:22},
除了创建77个不同社区区域的阵列,然后比较长度之外,还有什么更有效的方法 这类事情的模式相当简单 创建一个对象,迭代数组,并使用数据对象的公共属性作为新对象中的键,值将是增量计数 然后迭代新对象并比较这些计数 风险值数据=[ {社区地区:22}, {社区地区:22}, {社区地区:9}, {社区地区:9}, {社区地区:9}, {社区面积:5}, {社区面积:5}, {社区面积:5}, {社区面积:5}, {社区面积:1}, {社区地区:2}, {社区面积:3}, ]; var countObj=data.reducea,c=>{ a[c.社区| u区]=a[c.社区| u区]| 0+1; 归还 },{}; 控制台。记录“社区计数”,countObj var top3=Object.keyscountObj .sorta,b=>countObj[b]-countObj[a] .0,3 .地图编号//可选,如果需要数字与字符串
log'top3',top3我想出了这个代码-它可以工作。看起来与另一个答案非常相似。 var testData=[{ 地区:22 }, { 地区:23 }, { 地区:17 }, { 面积:12 }, { 面积:45 }, { 面积:12 }, { 地区:17 }, { 地区:23 }, { 地区:34 }, { 地区:22 }, { 面积:12 }, { 面积:45 }, { 面积:45 }, { 面积:45 }]; var result=testData.reduceacc,obj=>{ 如果acc.hasOwnPropertyobj.area{ 附件[目标区域]+; }否则{ 附件[obj.面积]=1; }; 返回acc; }, {}; var resultar=[]; 对于结果{resultar.push[key,result[key]]}中的var键 结果r.sort a,b=>b[1]-a[1]; //现在输出前3项 对于var i=0;i