猿问

数组查找统计

var a = [ 'ping','ewewe','w','js','windvane' ,'ping'];


如何把数组出现大于一次的item提取出来,并注明它出现的次数

心有法竹
浏览 448回答 1
1回答

湖上湖

返回的数组中,count为出现的次数,el代表元素。代码在下面,我之前也有写过这样的文章,你可以参考下。编写自己的代码库(javascript常用实例的实现与封装)//arr, rank->长度,默认为数组长度,ranktype,排序方式,默认降序function getCount(arr, rank,ranktype){&nbsp;&nbsp; &nbsp; var obj = {}, k, arr1 = []&nbsp; &nbsp; //记录每一元素出现的次数&nbsp; &nbsp; for (var i = 0, len = arr.length; i < len; i++) {&nbsp; &nbsp; &nbsp; &nbsp; k = arr[i];&nbsp; &nbsp; &nbsp; &nbsp; if (obj[k]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj[k]++;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj[k] = 1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; //保存结果{el-'元素',count-出现次数}&nbsp; &nbsp; for (var o in obj) {&nbsp; &nbsp; &nbsp; &nbsp; arr1.push({el: o, count: obj[o]});&nbsp; &nbsp; }&nbsp; &nbsp; //排序(降序)&nbsp; &nbsp; arr1.sort(function (n1, n2) {&nbsp; &nbsp; &nbsp; &nbsp; return n2.count - n1.count&nbsp; &nbsp; });&nbsp; &nbsp; //如果ranktype为1,则为升序,反转数组&nbsp; &nbsp; if(ranktype===1){&nbsp; &nbsp; &nbsp; &nbsp; arr1=arr1.reverse();&nbsp; &nbsp; }&nbsp; &nbsp; var rank1 = rank || arr1.length;&nbsp; &nbsp; return arr1.slice(0,rank1);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答