利用JS的动态语言特性对数组排序
首先,看看JS和Java中关系运算符的区别。这里拿大于号做示例(>)。
1、Java中的大于号不能用于两个字符串的比较
1 2 | String s1 = "11" , s2 = "12" ; System.out.println(s1>s2); //编译报错,不能通过 |
2、JS中的则可以,比较的字符串中各个字符ASCII大小
1 2 | var s1= "11" ,s2= "12" ; console.log(s1>s2); //输出false.逐次比较字符的ASCII顺序 |
嗯,利用js这个特性可以很好的对数据进行排序。这个是当时做abcc项目中的示例代码,如下一个数组:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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大小排序
1 2 | 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码比较
1 2 3 | //注意:这里将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=局本
因为刻本下有重刻本、翻刻本、影刻本,所以应该是业务上想要的是第二种排序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端