你所不知道的sort方法

说到快速排序,我们第一想到的一定是sort方法,但是,不要着急,在使用之前我们必须要了解sort方法到底是如何排序的。

例如: 我们对数组进行排序,我想我们的答案都是正确的。

let arr = [1,3,5,2,4]
arr.sort() // [1, 2, 3, 4, 5]

再看下面这一组

let arr = [5,22,8,36,1]
console.log(arr.sort()) //[1, 22, 36, 5, 8]

结果是不是和你预期的不一样呢,知其然,不知其所以然,所以今天刨根问底,一探究竟

为什么第二组排序会出现问题呢,原因如下:

1.js中的sort方法并不是按照我们数学中的1-10...,这样去依次排序的。

2.sort(默认升序),它会将排序的元素转为字符串,所以第二组的数组转变为 ['5','25','8','36','1'],

接下对应的字符串在计算机里找对应的Unicode码。

3.Unicode编码,数字的排序方式是 先整理1开头的,然后整理2开头的,依次,所以第二组数组就会出现问题。

那么有没有解决方案呢,当然有了,

1.定义一个比较器

function(x,y) {return x-y}  // 小于0,x移到y前面,大于0,移到y后面。等于0不变

let arr = [5,22,8,36,1]

arr.sort(function(x,y) {return x-y})// [1, 5, 8, 22, 36]

你学会了吗,每天进步一小点,加油!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值