zoukankan      html  css  js  c++  java
  • 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();    
            }
       }
    })();

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

  • 相关阅读:
    居中方法
    12个css实用技巧
    display元素来布局
    伪元素::before与:after
    弹性布局
    输入框下拉菜单
    HTMLinput日期输入类型
    模块XXXX可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)x64(64位)版本兼容。
    Epoll为我们带来了什么
    C内存管理相关内容--取自高质量C++&C编程指南
  • 原文地址:https://www.cnblogs.com/caichongdd/p/2697247.html
Copyright © 2011-2022 走看看