数组中每个值出现次数排序,并截取前几位
function _sort(userIds, count = 1) {
let obj = userIds.reduce((o, k) => {
k in o ? o[k]++ : (o[k] = 1);
return o;
}, {});
let arr = [];
for (let i in obj) {
arr.push([obj[i], i]);
}
arr.sort((a, b) => Number(a[0] < b[0]));
let length = count > arr.length ? arr.length : count,
newObj = {};
for (let i = 0; i <= length - 1; i++) {
newObj[arr[i][1]] = arr[i][0];
}
return Object.keys(newObj);
}
let array = ['a', 'a', 'a', 'b', 'c', 'c', 'd', 'e', 'e', 'e', 'e', 'f', 'f'];
console.log(_sort(array, 3));
// [ 'e', 'a', 'c' ]