• 高阶函数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码进行比较,如果首字母相同,比较第二个,一直到该字符串末尾

  • 相关阅读:
    C语言II|博客园04
    C语言!!!博客作业03
    C语言II博客作业02
    C语言II—作业01
    deppin系统安装electron步骤及问题
    deppin20.2 频繁卡死问题已解决
    那些实用的Nginx规则
    hibernate4升级5带来的一些参数变化
    java 后台获取文件上传的真实扩展名
    eclipse 卡顿的优化办法
  • 原文地址:https://www.cnblogs.com/czy960731/p/7577161.html
Copyright © 2020-2023  润新知