给定一个数组 ['a','ab','abc','ab','ab','a','c','f','c'...]对数组进行排序按照出现次数由多到少 期望结果['ab', 'ab', 'ab', 'a', 'a', 'c', 'c', 'abc',
var arr = ['a','ab','abc','ab','ab','a','c','f','c']
var b = []
var a = arr.reduce((obj,item)=>{
if(obj[item]){
obj[item] += 1
}else{
obj[item] = 1
}
return obj
},{})
var c = Object.values(a).sort((a,b)=>{
return b-a
})
c.forEach(item=>{
Object.keys(a).forEach(key=>{
if(item == a[key]){
for(var i=0;i< item;i++){
b.push(key)
}
delete a[key]
}
})
})
console.log(b)
输出结果:['ab', 'ab', 'ab', 'a', 'a', 'c', 'c', 'abc', 'f']