zoukankan      html  css  js  c++  java
  • js中的sort方法

    js中原生的sort()采用快排和插入排序算法,根据比较器对数组排序。

    默认是将数组元素转为字符串,然后根据Unicode字符集编号的大小排序。

    charCodeAt(index) 返回指定位置字符的 Unicode 编号,取值是 0 - 65535 间的整数,与 charAt() 方法执行的操作相似,后者返回的是单个字符。

    如果不提供比较器而对数字组成的数组排序,因为会将数字转为字符串再按编号排序而导致错误。要获得正确的顺序,只需提供比较器函数:function(a,b){return a-b;}即可。

    两个字符串之间不可以加减运算,但可以比大小,js会依次比编号的大小,如"

    'a'>'A'    //为true,因为 "a".charCodeAt(0)-->97, A-->65
    "ac">"ab"    //为true

     按拼音顺序排序:

    //按本地语言的顺序排序。中英混合时,中文在前英文在后,再分别按拼音顺序排。
    function (a, b) { return a.localeCompare(b); }

    按指定的顺序排序:

    //按指定的特定顺序排序,相同时再按enu2的顺序排
    //利用规则的索引做排序依据
    var enu1=['D','E','C','B','A','A0','A00']; var enu2=['NB','HB','SUV','MPV','SW','Roadster/Coupe/Convertible','-','']; var toSort= ["A00 HB", "A HB", "A0 SUV", "A0 SUV", "A SUV", "E SUV","D NB","A0 HB", "A SUV", "E MPV", "A NB", "C NB", "C HB", "A MPV", "B NB", "A0 NB", "A0 NB"]; toSort.sort(function(a,b){ if(enu1.indexOf(a.split(' ')[0])<enu1.indexOf(b.split(' ')[0])) return -1; if(enu1.indexOf(a.split(' ')[0])>enu1.indexOf(b.split(' ')[0])) return 1; if(enu1.indexOf(a.split(' ')[0])==enu1.indexOf(b.split(' ')[0])) { return enu2.indexOf(a.split(' ')[1])-enu2.indexOf(b.split(' ')[1]) } });
    //["D NB", "E SUV", "E MPV", "C NB", "C HB", "B NB", "A NB", "A HB", "A SUV", "A SUV", "A MPV", "A0 NB", "A0 NB", "A0 HB", "A0 SUV", "A0 SUV", "A00 HB"]

     

  • 相关阅读:
    Python爬虫连载9-JS加密之“盐”​、ajax请求
    Java连载86-List集合详解
    HTML连载69-透视属性以及其他属性练习
    Java连载85-集合的Contains和Remove方法
    Python爬虫连载8-JS加密(一)
    Java连载84-Collection的常用方法、迭代器
    HTML连载68-形变中心点、形变中心轴
    Java连载83-单向链表、双向链表、collections常用方法
    [刷题] 447 Number of Boomerangs
    [刷题] 454 4Sum II
  • 原文地址:https://www.cnblogs.com/kevin2chen/p/6646975.html
Copyright © 2011-2022 走看看