• 利用JS的动态语言特性对数组排序


    首先,看看JS和Java中关系运算符的区别。这里拿大于号做示例(>)。

    1、Java中的大于号不能用于两个字符串的比较

    String s1 = "11", s2 = "12";
    System.out.println(s1>s2); //编译报错,不能通过
    

    2、JS中的则可以,比较的字符串中各个字符ASCII大小

    var s1="11",s2="12";
    console.log(s1>s2); //输出false.逐次比较字符的ASCII顺序
    

    嗯,利用js这个特性可以很好的对数据进行排序。这个是当时做abcc项目中的示例代码,如下一个数组:

    var eidtionTypeList = [
    	{key:104212,val:"影刻本"},
    	{key:104211,val:"翻刻本"},
    	{key:104210,val:"重刻本"},
    	{key:110,val:"局本"},
    	{key:109,val:"殿本"},
    	{key:108,val:"藍印本"},
    	{key:107,val:"朱印本"},
    	{key:106,val:"套印本"},
    	{key:105,val:"活字印本"},
    	{key:104,val:"刻本"},
    	{key:103,val:"抄本"},
    	{key:102,val:"寫本"},
    	{key:101,val:"稿本"},
    	{key:100,val:""} 
    ];
    

    1、按key大小排序

    eidtionTypeList.sort(function(a,b){return a.key>b.key;});
    console.log(eidtionTypeList);
    

    输入如下:

    0
    Object key=100
    1
    Object key=101 val=稿本
    2
    Object key=102 val=寫本
    3
    Object key=103 val=抄本
    4
    Object key=104 val=刻本
    5
    Object key=105 val=活字印本
    6
    Object key=106 val=套印本
    7
    Object key=107 val=朱印本
    8
    Object key=108 val=藍印本
    9
    Object key=109 val=殿本
    10
    Object key=110 val=局本
    11
    Object key=104210 val=重刻本
    12
    Object key=104211 val=翻刻本
    13
    Object key=104212 val=影刻本

     

    2、按字符的ASCII码比较

    //注意:这里将key转成了字符串类型
    eidtionTypeList.sort(function(a,b){return a.key+"">b.key+"";});
    console.log(eidtionTypeList);
    

    输出如下:

    0
    Object key=100
    1
    Object key=101 val=稿本
    2
    Object key=102 val=寫本
    3
    Object key=103 val=抄本
    4
    Object key=104 val=刻本
    5
    Object key=104210 val=重刻本
    6
    Object key=104211 val=翻刻本
    7
    Object key=104212 val=影刻本
    8
    Object key=105 val=活字印本
    9
    Object key=106 val=套印本
    10
    Object key=107 val=朱印本
    11
    Object key=108 val=藍印本
    12
    Object key=109 val=殿本
    13
    Object key=110 val=局本


    因为刻本下有重刻本、翻刻本、影刻本,所以应该是业务上想要的是第二种排序。

  • 相关阅读:
    mysql max_allowed_packet过小导致的prepare失败
    linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解
    mysql metadata lock锁
    velocity merge作为工具类从web上下文和jar加载模板的两种常见情形
    mysql 5.7.15发布
    mysql 5.6.33发布
    2016年09月编程语言排行榜
    postgresql 9.6 rc1发布
    www.97top10.com--做最好的技术交流网站
    nginx/ajax跨子域请求的两种现代方法以及403解决
  • 原文地址:https://www.cnblogs.com/snandy/p/1968580.html
Copyright © 2020-2023  润新知