利用js动态类型特性对数组排序
2010-05-11 09:07
471 查看
首先,看看js和java中关系运算符的区别。这里拿大于号做示例(>)。
a、java中的大于号不能用于两个字符串的比较
b、js中的则可以,比较的字符串中各个字符ASCII大小
嗯,利用js这个特性可以很好的对数据进行排序。如下一个数组:
1、按key大小排序
输出如下:
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码比较
输出如下:
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=局本
因为刻本下有重刻本、翻刻本、影刻本,所以应该是业务上想要的是第二种排序。
a、java中的大于号不能用于两个字符串的比较
String s1 = "11", s2 = "12"; System.out.println(s1>s2);//编译报错,不能通过
b、js中的则可以,比较的字符串中各个字符ASCII大小
var s1="11",s2="12"; console.log(s1>s2);//输出false.逐次比较字符的ASCII顺序
嗯,利用js这个特性可以很好的对数据进行排序。如下一个数组:
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=局本
因为刻本下有重刻本、翻刻本、影刻本,所以应该是业务上想要的是第二种排序。
相关文章推荐
- 利用JS的动态语言特性对数组排序
- js中数字类型数组排序
- 委托示例(利用委托对不同类型的对象数组排序)
- iOS动态特性初研究(利用JSON动态创建类型和对象)
- 利用JS对象的特性去除数组中的重复项
- js中数字类型数组排序
- iOS动态特性初研究(利用JSON动态创建类型和对象)
- vue.js 利用SocketCluster实现动态添加数据及排序
- [原]iOS动态特性初研究(利用JSON动态创建类型和对象)
- 【OC加强】枚举介绍、数组的排序、对象的排序、如何利用block排序以及一些数据类型知识
- js中数字类型数组排序
- 委托示例(利用委托对不同类型的对象数组排序)
- 数据结构与算法:动态数组(利用万能指针实现任意类型数组操作)
- 设计一个公共的class,通过它的接口可以对任何类型的数组排序
- cocos2d JS 中的数组拼接与排序
- 利用js的prototype属性给数组去重
- js如何判断数据类型和数组类型整理
- js:语言精髓笔记12--动态语言特性(2)
- 利用js读取动态网站从服务器端返回的数据
- js中的数组对象排序