zoukankan      html  css  js  c++  java
  • JavaScript Array对象sort() 方法小结

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

    语法
    arrayObject.sort(sortfunction)


    参数
    sortfunction 可选。规定排序顺序。必须是函数。

    返回值
    对数组的引用。请注意,数组在原数组上进行排序,不生成副本。

    说明
    如果调用该方法时没有使用参数,将按字母升序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行升序排列。先调用每个项的toString()方法,然后按照字符编码的顺序进行排序。。

    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

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


    实例
    例子 1
    按字母顺序进行排序:

    var arr = new Array(6);
    arr[0] = "George";
    arr[1] = "John";
    arr[2] = "Thomas";
    arr[3] = "James";
    arr[4] = "Adrew";
    arr[5] = "Martin";
    console.log(arr.sort().toString());

    输出:

    Adrew,George,James,John,Martin,Thomas

    例子 2

    var arr = new Array(6);
    arr[0] = "10";
    arr[1] = "5";
    arr[2] = "40";
    arr[3] = "25";
    arr[4] = "1000";
    arr[5] = "1";
    console.log(arr.sort().toString());

      

    输出:

    1,10,1000,25,40,5

    请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:

    function sortNumber(a,b)
    {
    return a-b;
    }
    
    var arr = new Array(6);
    arr[0] = "10";
    arr[1] = "5";
    arr[2] = "40";
    arr[3] = "25";
    arr[4] = "1000";
    arr[5] = "1";
    console.log(arr.sort(sortNumber).toString());

    输出:

    1,5,10,25,40,1000

    如上在使用了sortNumber函数之后,就可以返回正确的值了,如果想进行降序排列只需要 return b-a 就可以了。

    例子3

     function sortArr(a, b) {
             return a[0] - b[0];
         }
         var arr= [
             [1, '张三'],
             [8, '李四'],
             [10, '王小二'],
             [4, '王五']
         ]
        console.log(arr.sort(sortArr).toString());

    输出:

    1,张三,4,王五,8,李四,10,王小二

    如果a和b本身就是数组,这个时候我们就需要通过对它们内部的值比较来对数组进行排序了,如上述实例。

    当第一个比较值相等,但是我们还想进行再次区分的时候,可以使用第二比较值,并且比较的深度可以随着我们的需求扩展。

     function sortArr(a, b) {
             if (a[0] == b[0]) {
                 return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;
             }
             return a[0] - b[0];
         }
         var arr= [
             [1, '张三'],
             [8, '李四'],
             [4, '王五'],
             [4, '牛虻']
         ]
        console.log(arr.sort(sortArr).toString());

    输出:

    1,张三,4,牛虻,4,王五,8,李四

    例子4

      function compare(a, b) {
             return a.age - b.age
         }
         var employees = []
         employees[0] = { name: "张三", age: 32 }
         employees[1] = { name: "李四", age: 17 }
         employees[2] = { name: "王五", age: 58 }
         employees[3] = { name: "牛虻", age: 62}
         employees.sort(compare);

    当比较的数据越来越复杂的时候,我们最好使用对象进行排序。这样我们就能够从代码上看出来是使用什么值来进行比较的了。

    
    
    
  • 相关阅读:
    在vim中不能用鼠标右键粘贴和跨系统复制粘贴的解决办法
    2、cat
    OTG相关知识
    vim报错E325(出现.swp文件)地解决方法
    Linux命令1
    数组与集合
    if switch for while
    各类运算符
    java基础概念
    基于对话框的程序隐藏于托盘(二)
  • 原文地址:https://www.cnblogs.com/1024zy/p/6071242.html
Copyright © 2011-2022 走看看