• JavaScript--数组--sort比较器


    因为原装的sort这个API其实是先把要比较的数转换为字符串再进行比较的,所以并不好用

    所以准备自定义一个比较器函数:

     1   //sort原理--->sort(arr,compare)
     2     function sort(arr,compare){
     3         if(compare===undefined){//如果compare未定义,则创建一个compare原装比较器,都转化为字符串进行比较,如果传入了自定义比较器,则调用自定义比较器进行排序
     4             compare=function (a,b){//原装比较器
     5                 return String(a)>String(b)?1://大于0则返回1
     6                           String(a)>String(b)?-1://小于0则返回-1
     7                                                         0;//否则返回0
     8             }
     9         }
    10         for(var r=1;r<arr.length;r++){//比较次数
    11             for(var i=0;i<arr.length-r;i++){//前后两两比较
    12                 if(compare(arr[i],arr[i+1])>0){//如果x大于y
    13                     var temp=arr[i];//将x的值给第三方temp
    14                     arr[i]=arr[i+1];//将y的值给x
    15                     arr[i]=temp;//再将temp的值给x
    16                 }//也就是x和y互换位置
    17             }
    18         }
    19     }
    20     //创建自定义比较器函数
    21     /*function cmp(x,y){
    22         return x-y;
    23     }*/
    24     var cmp=function(a,b){return a-b;}//可以直接写在sort(cmp)中,sort(function(a,b){return a-b;});
    25     var arr=[8,3,123,15,4,9,7,1,2];
    26     arr.sort();//使用默认sort排序
    27     console.log(arr.join(" "));
    28     var arr2=[8,3,123,15,4,9,7,1,2];
    29     arr2.sort(cmp);//使用自定义比较器函数排序,如果sort(cmp()),则是只执行了一次,sort(cmp)表示将cmp函数给予sort使用
    30     arr2.reverse();//降序排列,先sort升序,再用reverse反转
    31     console.log(arr2.join(" "));
  • 相关阅读:
    Eclipse远程调试,服务器为linux的配置
    关于javascript代码执行时间的计算
    Java编程中容易疏忽的知识点
    为什么要开发自己的框架、平台或插件
    算法在计算中的作用
    程序员的自豪感
    iOS,Objective-C Runtime
    iOS,本地化(国际化)字符
    iOS,应用崩溃日志分析
    iOS,信息加解密
  • 原文地址:https://www.cnblogs.com/chenzeyongjsj/p/5517411.html
Copyright © 2020-2023  润新知