给定一个数组 ['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']

posted @ 2022-05-05 12:05  有肌肉的小眼睛  阅读(14)  评论(0编辑  收藏  举报