详解JS中的sort()方法

               前几天在写逻辑的时候,又遇到了数组对象的排序问题,因此今天闲着无事就全面的总结一下sort()函数的用法。下面我将从以下方面来进行介绍。

            首先在默认情况下,sort()方法按升序排列数组项---即最小的值位于最勤勉,最大的值排在最后面。为了实现排序,sort()方法会调用每个数组想的toString()转型方法,然后比较得到的字符串,即使数组中的每一项都是数值,sort()方法比较的也是字符串。所以以下数组会返回看似不正确的排序。           

         var values = [0, 1, 5, 10, 15];
         values.sort();
         alert(values); //0,1,10,15,5

      一:单纯的进行数字比较已确定如何排序。

           逻辑:① 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

                   ② 若 a 等于 b,则返回 0。 

                   ③ 若 a 大于 b,则返回一个大于 0 的值

          代码如下                         

             function ascNum(a,b)
             {
                return a - b;
             }
             function descNum(a,b)
             {
                return b - a;
              }
             var arr = new Array( 3600, 5010, 10100, 801); 
             arr.sort(ascNum); //801,3600,5010,10100
             console.log(arr);
             arr.sort(descNum);
             console.log(arr); //10100,5010,3600,801,

         二:数组对象进行排序。

              逻辑:① 获取到数组对象的某一个值进行比较。

                         ② 原理同第一点             

        function sortByKey(array,key){
          return array.sort(function(a,b){
          var x=a[key];
          var y=b[key];
         return ((x<y)?-1:((x>y)?1:0));
       });
       }
        var obj = [
         {age:30,name:'yan'},
         {age:19,name:'ma'},
         {age:20,name:'zhang'},
       ]
    obj.sort(obj,'age');
    console.log(obj)// [{age:19,name:'ma'},{age:20,name:'zhang'},{age:30,name:'yan'}]

       如有不对的地方欢迎指正出来~

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值