sort(大小排序、频率排序)

sort()

  • sort() 方法用于对数组的元素进行排序;
  • sort() 方法默认将按字母和升序将值作为字符串进行排序;

对数字进行排序

//return < 0 (保持不变)
//return > o (交换次序)
const arr1 = [3,5,1,7,4,8]
arr1.sort((a, b) => a - b)

对字母进行排序

//根据字符串Unicode码点
const arr2 = ['h','e','l','l','o']
arr2.sort()

在实际中的使用

冒泡排序

function bubbleSort(arr) {
  let len = arr.length
  for(let i = 0; i < len - 1; i++) {
    for(let j = 0; j < len -1; j++) {
      if(arr[j] > arr[j + 1]) {
        let num = arr[j]
        arr[j] = arr[j + 1]
        arr[j + 1] = num
      }
    } 
  }
  return arr
}

按数组元素出现的频率排序

//说明:此方法不适用数组元素为引用类型的情况,因为js中对象的键只能为字符串
//arr:传入的数组
//length:返回出现次数排序在前length的
//type:升序/降序
function getCount(arr,length,type) {
  let obj = {}, arr1=[], k
  for (let i = 0, len = arr.length; i < len; i++){
    k = arr[i]
    if(obj[k]) obj[k]++;
    else obj[k] = 1
  }
  for (let o in obj) {
    arr1.push({ el: 0, count: obj[o] })
  }
  arr1.sort(function (n1, n2) {
    return n2.count - n1.count
  })
  if (type === 1) {
    arr1 = arr1.reverse()
  }
  let length = length || arr1.length;
  return arr1.slice(0, length)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值