• es5


      1 /**
      2  * 描述:该sort()方法对数组中的元素进行排序并返回该数组,默认排序顺序是根据字符串Unicode代码点。
      3  * 语法:arr .sort([compareFunction])
      4  * 参数:
      5  *  指定定义排序顺序的函数。如果省略,则根据每个元素的字符串转换,根据每个字符的Unicode代码点值对数组进行排序。
      6  *  如果compareFunction未提供,undefined则通过将所有非数组元素转换为字符串并按Unicode代码点顺序比较字符串来对所有非数组元素进行排序。
      7  *  例如,“香蕉”出现在“樱桃”之前。在数字排序中,9出现在80之前,但由于数字被转换为字符串,因此“80”以Unicode顺序出现在“9”之前(也就是说,只匹配第一位)。
      8  *  所有  undefined 元素都排序到数组的末尾。
      9  * 返回值:排序的数组。请注意,数组已就地排序,并且不进行复制。
     10  */
     11 
     12 
     13 /**
     14  * 1.默认升序(因此“80”以Unicode顺序出现在“9”之前(也就是说,只匹配第一位))
     15  * 2.可根据可选函数,进行升序和降序
     16  */
     17 
     18 var a = ['A', 'B', '2', '1', '10', '80', '9'];
     19 var b = a.sort(
     20     // function (a, b) {
     21     //     if (a < b) {
     22     //         return -1;
     23     //     }
     24     //     if (a > b) {
     25     //         return 1;
     26     //     }
     27     //     return 0;
     28     // }
     29 
     30     // a-b则为升序
     31     // b-a则为降序
     32     // function hello(a, b) {
     33     //     return b - a;
     34     // }
     35     function (a, b) {
     36         return b - a;
     37     }
     38 );
     39 
     40 console.log(b);
     41 
     42 
     43 
     44 /**
     45  * 可以根据其中一个属性的值对对象进行排序
     46  */
     47 var items = [
     48     { name: 'Edward', value: 21 },
     49     { name: 'Sharpe', value: 37 },
     50     { name: 'And', value: 45 },
     51     { name: 'The', value: -12 },
     52     { name: 'Magnetic', value: 13 },
     53     { name: 'Zeros', value: 37 }
     54 ];
     55 
     56 // sort by value
     57 items.sort(function (a, b) {
     58     return a.value - b.value;
     59 });
     60 
     61 // sort by name
     62 items.sort(function (a, b) {
     63     var nameA = a.name.toUpperCase(); // ignore upper and lowercase
     64     var nameB = b.name.toUpperCase(); // ignore upper and lowercase
     65     if (nameA < nameB) {
     66         return -1;
     67     }
     68     if (nameA > nameB) {
     69         return 1;
     70     }
     71     return 0;
     72 });
     73 
     74 console.log(items)
     75 
     76 
     77 
     78 
     79 /**
     80  * 非ASCIll排序
     81  */
     82 
     83 var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'];
     84 items.sort(function (a, b) {
     85     return a.localeCompare(b);
     86 });
     87 
     88 
     89 
     90 
     91 /**
     92  *使用map排序
     93  *原因:
     94  *  compareFunction可在阵列内被调用每个元件多次。
     95  *  根据其compareFunction性质,这可能会产生很高的开销。
     96  *  做的工作compareFunction越多,排序的元素就越多,可以考虑使用地图进行排序。
     97  *  我们的想法是遍历数组一次以提取用于排序到临时数组的实际值,对临时数组进行排序,然后遍历临时数组以实现正确的顺序。
     98  * 
     99  */
    100 
    101 var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
    102 var mapped = list.map(function (el, i) {
    103     return { index: i, value: el.toLowerCase() };
    104 })
    105 
    106 mapped.sort(function (a, b) {
    107     if (a.value > b.value) {
    108         return true;
    109     }
    110     if (a.value < b.value) {
    111         return false;
    112     }
    113     return;
    114 });
    115 
    116 var result = mapped.map(function (el) {
    117     return list[el.index];
    118 });
    119 
    120 console.log(result);
  • 相关阅读:
    Zookeeper
    RPC
    RabbitMQ学习总结
    ActiveMQ学习总结
    mybatis自动映射和手动映射
    oracle instantclient_12_2安装
    EFK(Elasticsearch+Filebeat+Kibana)收集容器日志
    prometheus-operator监控Kubernetes
    编译安装 keepalived-2.0.16.tar.gz
    Kubernetes pod平滑迁移
  • 原文地址:https://www.cnblogs.com/cisum/p/9686249.html
Copyright © 2020-2023  润新知