| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- /**
- *
- * @desc 返回数组(或字符串)中出现最多的元素和出现次数
- * @param {Array} arr
- * @param {Number} rank:长度,默认为数组长度
- * @param {Number} ranktype:排序方式,默认降序;如果ranktype为1,则为升序
- * @return {Array[Object]} el:元素,count:次数
- */
- function getCount(arr, rank, ranktype) {
- var obj = {},
- k, arr1 = [];
- //记录每一元素出现的次数
- for (var i = 0, len = arr.length; i < len; i++) {
- k = arr[i];
- if (obj[k]) {
- obj[k]++;
- } else {
- obj[k] = 1;
- }
- };
- //保存结果{el:'元素',count:出现次数}
- for (var o in obj) {
- arr1.push({
- el: o,
- count: obj[o]
- });
- };
- //排序(降序)
- arr1.sort(function (n1, n2) {
- return n2.count - n1.count
- });
- //如果ranktype为1,则为升序,反转数组
- if (ranktype === 1) {
- arr1 = arr1.reverse();
- }
- var rank1 = rank || arr1.length;
- return arr1.slice(0, rank1);
- };
- module.exports = getCount;
|