猿问

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

比如 var arr = [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次。

各位大佬有什么思路吗?

如果您有思路,可以给小弟来个评论,实现方法多多益善~~~


手掌心
浏览 679回答 1
1回答

慕斯709654

第一种 obj 记录出现次数var&nbsp;obj&nbsp;=&nbsp;{};for(var&nbsp;i=0;i<arr.length;i++) &nbsp;obj[arr[i]]&nbsp;=&nbsp;!obj[arr[i]]?1:++obj[arr[i]];第二种 indexOfvar&nbsp;cache=[],obj={};&nbsp;for(var&nbsp;i=0;i<arr.length;i++) &nbsp;&nbsp;&nbsp;cache.indexOf(arr[i])==-1?(obj[arr[i]]=1,cache.push(arr[i])):obj[arr[i]]++第三种 正则查找var&nbsp;obj&nbsp;=&nbsp;{},idx=[];for(var&nbsp;i=0,str&nbsp;=&nbsp;arr.join(',');i<arr.length;i++) &nbsp;&nbsp;!obj[arr[i]]&&(patch(arr[i],str),obj[arr[i]]=1);function&nbsp;patch(re,s){ &nbsp;&nbsp;&nbsp;re=new&nbsp;RegExp(re,"ig"); &nbsp;&nbsp;&nbsp;idx.push(s.match(re).length); }
随时随地看视频慕课网APP

相关分类

Vue.js
我要回答