js中Array类型重排序方法

js中Array类型重排序方法

这里讲到的重排序方法有 reverse 和 sort 两种方法,主要简单解释 sort 方法的比较原理

先从栗子入手吧~
这里有两个数组
var num1 = [ 4, 3, 2, 1, 0 ]
var num2 = [ 0, 1, 25, 9, 5, 2 ];

一、reverse方法
console.log(num2.reverse());  //2,5,9,25,1,0

reverse方法主要用于反转数组,将数组倒叙输出

二、sort方法
console.log(num1.sort());  //0,1,2,3,4

在上面这个栗子中,是我们经常使用 sort 方法遇到的情况,因此常常会有一个 sort 用于升序排序的误区,其实并不是这样的,例如下面这个栗子:

console.log(num2.sort());  //0,1,2,25,5,9

在这个栗子中,我们可以看到数组并没有像 num1 那样升序排序,这是因为 sort 的排序原理其实是 将每个元素调用 toString 方法后,进行字符串比较,也就是说,在 num2 进行比较的时候,是将 “0” , “1”, “2”, “25”, “5”, "9"来比较,比较字符串时总是从第一位开始比较的

console.log("25" < "5");  //true  从2开始和5比较,小于5,所以返回true
console.log("9" < "25");  //false  从9开始和2比较,大于2,所以返回false
console.log("2" < "25");  //true  从2和2开始比较,相同,继续比较,前面是个位数,后面是十位数,返回ture

因此在 num2 中,因为比较每个元素的字符串,所以 0 < 1 < 2 < 25 < 5 < 9
但如果我们需要通过 sort 单纯比较每个元素的数字类型大小,可以通过下面的方式

    function compare(a,b){
            if(a < b){  
                return -1;  //前面的数字小于后面的数字,不需要交换,返回-1
            }
            else if(a > b){
                return 1;  //前面的数字大于后面的数字,需要交换,返回1
            }
            else {  //如果都不是以上的情况,就是相等,不需要交换,返回0
                return 0;
            }
        }
        console.log(nums.sort(compare));  //0,1,2,5,9,25
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值