zoukankan      html  css  js  c++  java
  • 高阶函数sort

      排序中我们经常会用sort这个高阶函数,我们今天就来讲讲这个sort的比较机制,对于数字来说我们只需要比较他们的大小就可以了

     但是 

        var arr =[15,81,9,4,3];
        alert(arr.sort()); // 最后的结果是 15 3 4 81 9

    结果和我们想的不太一样,说明这个函数的内部不仅仅是比较数字大小那么简单

    在看一个

    var arr =['Apple','software','Tencent','alibaba'];
    alert(arr.sort()); //最后的结果是 Apple Tencent alibaba software 

    同样是a开头但是结果一个在前,一个在后

    或许你已经知道了,但是为了说明问题我们在看一个

    var arr =['Apple','software','Tencent','123','89'];
    alert(arr.sort());//123 89 Apple software Tencent

    最后一句话,其实是 因为字符串根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后,对于数字呢 先把他转化为String类型 比较1 的ASCII码小于8,所以123 “小于” 89

    现在我们来重写sort方法

    var arr =[22,9,59,123,89];
     arr.sort(
            function (x,y){
                if(x>y)
                return 1;
                else if(y<x)
                return -1;
                else{
                    return 0;
                    }    
            });
        alert(arr); //9 22 59 89 123

    对于数字,我们直接对它们比较

    var arr =['Apple','software','Tencent','alibaba'];
    arr.sort(
            function (x,y){
                s1 = x.toUpperCase();
                s2 = y.toUpperCase();
                if(s1>s2)
                    return 1;
                else if(s1<s2)
                    return -1;
                else
                    return 0;
            });
        alert(arr);   // alibaba Apple software Tencent
        alert('abb'<'abc'); //true

    对于字符串忽略他们大小写进行比较,对字符首字母的ASII码进行比较,如果首字母相同,比较第二个,一直到该字符串末尾

  • 相关阅读:
    11111
    JavaScript基础
    CSS使用
    CSS 基本
    前端之HTML
    Python 迭代器和生成器
    Python day11
    Python 函数
    第十七篇:django基础(二)
    第十六篇:django基础
  • 原文地址:https://www.cnblogs.com/czy960731/p/7577161.html
Copyright © 2011-2022 走看看