getCount.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /**
  2. *
  3. * @desc 返回数组(或字符串)中出现最多的元素和出现次数
  4. * @param {Array} arr
  5. * @param {Number} rank:长度,默认为数组长度
  6. * @param {Number} ranktype:排序方式,默认降序;如果ranktype为1,则为升序
  7. * @return {Array[Object]} el:元素,count:次数
  8. */
  9. function getCount(arr, rank, ranktype) {
  10. var obj = {},
  11. k, arr1 = [];
  12. //记录每一元素出现的次数
  13. for (var i = 0, len = arr.length; i < len; i++) {
  14. k = arr[i];
  15. if (obj[k]) {
  16. obj[k]++;
  17. } else {
  18. obj[k] = 1;
  19. };
  20. };
  21. //保存结果{el:'元素',count:出现次数}
  22. for (var o in obj) {
  23. arr1.push({
  24. el: o,
  25. count: obj[o]
  26. });
  27. };
  28. //排序(降序)
  29. arr1.sort(function (n1, n2) {
  30. return n2.count - n1.count;
  31. });
  32. //如果ranktype为1,则为升序,反转数组
  33. if (ranktype === 1) {
  34. arr1 = arr1.reverse();
  35. };
  36. var rank1 = rank || arr1.length;
  37. return arr1.slice(0, rank1);
  38. };
  39. module.exports = getCount;