javascript 步步为营2——数组中sort的使用

  js中的sort()方法是用于对数组的元素进行排序。

先从w3c 复制一下定义:

arrayObject.sort(sortby)
其中sortby 如果要加参数必须是一个函数
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。

其实也已经说得比较清楚了,稍微看个例子

(function(){
   var a=[1,2,23,4,5,16,7];
   document.write(a.sort(sortNumber));//返回的是1 2 4 5 7 16 23
   function sortNumber(a,b){
        return a-b;
   }
})();

但是只是简单的这样的排序未免太无趣!其实sort的精髓在于对比较函数的写法的应用,写好了,我们可以做到不同数据类型的排序,比如说 字符串排序 日期排序 等等

看下面的例子:

var a=['1班','12班','19班','22班','8班','9班','10班'];
   document.write(a.sort());//返回 10班,12班,19班,1班,22班,8班,9班 

但是这并不是我们希望的排序方式,那么需要对比较函数 做一些处理,需要用到parseFloat()方法

(function(){
   var a=['1班','12班','19班','22班','8班','9班','10班'];
   document.write(a.sort(sortNumber));//返回 1班,8班,9班,10班,12班,19班,22班 
   function sortNumber(a,b){//对字符串类型的数组元素进行排序
        var a1=convert(a,'float');
        var b1=convert(b,'float');
        return a1-b1;
   }
   function convert(value,dataType){//对常用的数据类型进行了函数封装
        switch(dataType){
            case 'int':
                return parseInt(value);
            case "float":
                return parseFloat(value);
            case "date":
                return new Date(Date.parse(value));
            default:
                return value.toString();    
        }
   }
})();

这下就是我们想要的结果了!其实我们还可以去扩展到自己的表格排序方面,对多组多列数据的排序

原文地址:https://www.cnblogs.com/caichongdd/p/2697247.html