为了账号安全,请及时绑定邮箱和手机立即绑定

在想一个js算法,如何算出数组所有项的出现次数

在想一个js算法,如何算出数组所有项的出现次数

ABOUTYOU 2019-05-09 21:54:15
比如vararr=[1,2,3,1,5,8,2,9,9,2,2,2,3];如何才能能够算出,数组中有几种值,以及某种值出现的次数呢?比如这个题答案就是:数组中出现的元素值为:1,2,3,5,8,9这几个。其中1出现次数为2次,2出现次数为5次,3出现次数为2次,5出现次数为1次,8出现次数为1次,9出现次数为2次。各位大佬有什么思路吗?如果您有思路,可以给小弟来个评论,实现方法多多益善~~~
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

第一种obj记录出现次数
varobj={};
for(vari=0;iobj[arr[i]]=!obj[arr[i]]?1:++obj[arr[i]];
第二种indexOf
varcache=[],obj={};
for(vari=0;icache.indexOf(arr[i])==-1?(obj[arr[i]]=1,cache.push(arr[i])):obj[arr[i]]++
第三种正则查找
varobj={},idx=[];
for(vari=0,str=arr.join(',');i!obj[arr[i]]&&(patch(arr[i],str),obj[arr[i]]=1);
functionpatch(re,s){
re=newRegExp(re,"ig");
idx.push(s.match(re).length);
}
                            
查看完整回答
反对 回复 2019-05-09
?
富国沪深

TA贡献1790条经验 获得超9个赞

初始化空对象,遍历数组,把数组成员设置为对象的key,初始value为0,然后每找到一个key++
arr.reduce((prev,curr)=>{
prev[curr]=prev[curr]||0
prev[curr]++
returnprev
},{})
数组去重,得到唯一的成员,然后遍历,返回每个成员在原数组中的个数
[...newSet(arr)].map(a=>({[a]:arr.filter(_a=>_a===a).length}))
                            
查看完整回答
反对 回复 2019-05-09
  • 2 回答
  • 0 关注
  • 1126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信