zoukankan      html  css  js  c++  java
  • JS-sort排序

    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较

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

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

    <script>
    function NumAscSort(a,b)
    {
    return a - b;
    }
    function NumDescSort(a,b)
    {
    return b - a;
    }
    var arr = new Array( 3600, 5010, 10100, 801);
    arr.sort(NumDescSort);
    alert(arr);         //10100,5010,3600,801
    arr.sort(NumAscSort);
    alert(arr);        //801,3600,5010,10100
    </script>

    <script>
    var myarray=["Apple", "Orange", "Banana"]
    myarray.sort()
    alert(myarray);  //Apple ,Banana,Orange

    对于对象数组排序,我们先写一个构造比较函数的函数:

    <title>无标题文档</title>
    <script>
    /*
    var by = function(name){
        return function(o, p){
            var a, b;
            if (typeof o === "object" && typeof p === "object" && o && p) {
                a = o[name];
                b = p[name];
                if (a === b) {
                    return 0;
                }
                if (typeof a === typeof b) {
                    return a < b ? -1 : 1;
                }
                return typeof a < typeof b ? -1 : 1;
            }
            else {
                throw ("error");
            }
        }
    }*/
    var by = function(name,minor){
        return function(o,p){
            var a,b;
            if(o && p && typeof o === 'object' && typeof p ==='object'){
                a = o[name];
                b = p[name];
                if(a === b){
                    return typeof minor === 'function' ? minor(o,p):0;
                }
                if(typeof a === typeof b){
                    return a < b ? -1:1;
                }
                return typeof a < typeof b ? -1 : 1;
            }else{
                thro("error");
            }
        }
    }
    
    var employees=[]
    employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
    employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
    employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
    employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}
    
    //employees.sort(by("age"));
    employees.sort(by('age',by('name')));
    </script>
    </head>
    
    <body>
    </body>
  • 相关阅读:
    矩阵
    字符串算法 KMP算法 BF算法的升级版
    字符查找算法 BF算法
    查找:二叉查找树升级版 平衡二叉树(AVL树) 2020年8月
    查找:二叉查找树 c++ 2020年8月
    基数排序,也叫关键码排序
    归并排序,冯诺依曼首次提出。分为递归实现、非递归实现
    堆排序,升级版的选择排序
    P1233 木棍加工【dp】
    P2758 编辑距离【dp】
  • 原文地址:https://www.cnblogs.com/919czzl/p/4319388.html
Copyright © 2011-2022 走看看