使用sort(function(a,b){return a-b})对数组进行排序的原理

使用sort(function(a,b){return a-b})对数组进行排序的原理

案例:
function sort(){
           
            var _arr1=[8,95,31,1,5];
         
            console.log(_arr1.sort());//输出1,31,5,8,95,因为会先将元素转换为字符串,用字符串的首字符进行比较,
                                     //如果第一个字符相同,继续比较第二个字符
            //针对上面的情况,使用以下方法解决
            console.log(_arr1.sort(function(a,b){//a,b只是参数,可以使用其他字符
                return a-b;
            }));//输出1,5,8,31,95
        }
        sort();

sort(function(a,b){return a-b})对数组进行排序的原理:

    _arr1.sort(function(a,b){
        return a-b;
    }); 

上面的代码中使用这个方法就相当于给下面的函数_arr1.sort传递了一个实参,fx用来接收这个实参

 _arr1.sort=function(fx){//fx用来接收调用_arr1.sort时传过来的参数,此时fx=function(a,b){return a-b;}
                //然后用冒泡排序从前往后进行比较,按由小到大的顺序排序
                var _empty=null;
                for(var n=0; n<_arr1.length-1;n++){
                    for(var i=0;i<_arr1.length-1; i++){
                        //因为fx接收过参数之后fx=function(a,b){return a-b},那么这里调用fx时传过去两个参数
                        //就相当于给function传了两个参数,a=_arr1[i+1],b=_arr[i](因为返回的是a-b),用后一位数减前一位数
                        if(fx(_arr1[i+1],_arr1[i])<0){//判断用第i+1个元素减去第i个元素是否小于0,如果小于0,说明i+1位置上的数较小,进行交换
                                                      //例如95-8大于0,不交换,31-95小于0,进行交换,把较小的值放在前面
                            _empty=_arr1[i];
                            _arr1[i]=_arr1[i+1];
                            _arr1[i+1]=_empty;
                        }
                    }
                }
                console.log(_arr1);

        }
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值