/** * * @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;