JavaScript对象数组根据某属性sort升降序排序
1、自定义一个比较器,其参数为待排序的属性。
2、将带参数的比较器传入sort()。
var data = [
{name: "Bruce", age: 23, id: 16, score: 80},
{name: "Alice", age: 24, id: 12, score: 90},
{name: "David", age: 21, id: 11, score: 70},
{name: "Cindy", age: 22, id: 10, score: 100},
];
data.sort(compareUp("age"));
data.sort(compareDown("age"));
function compareUp(propertyName) { // 升序排序
if ((typeof data[0][propertyName]) != "number") { // 属性值为非数字
return function(object1, object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
return value1.localeCompare(value2);
}
} else {
return function(object1, object2) { // 属性值为数字
var value1 = object1[propertyName];
var value2 = object2[propertyName];
return value1 - value2;
}
}
}
function compareDown(propertyName) { // 降序排序
if ((typeof data[0][propertyName]) != "number") { // 属性值为非数字
return function(object1, object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
return value2.localeCompare(value1);
}
} else {
return function(object1, object2) { // 属性值为数字
var value1 = object1[propertyName];
var value2 = object2[propertyName];
return value2 - value1;
}
}
}
最新文章
- How to set up a basic working Appium test environment
- Weka链接Mysql数据库
- xfire找不到services.xml
- (DP)Best Time to Buy and Sell Stock
- 【Android进阶】让程序运行效率更高的编程技巧总结
- Java 常用List集合使用场景分析
- ecshop 商品属性显示方法
- C#控件数组批量生成控件
- Lecture6.概率极限理论
- docker的安装和升级
- RabbitMQ安装笔记
- java学习--修饰符
- EF 下如何更新数据表数据
- HTML5-网页添加视频-菜鸟笔记
- SQLServer 查询数据死锁语句
- 监控 Redis 服务方案
- Linux系统排查——CPU负载篇
- Windows 10利用自带的 Hyper-v 安装Linux
- ANDROID L——Material Design具体解释(动画篇)
- Solr中的一些查询参数
热门文章
- redis实现高并发下的抢购/秒杀功能
- 【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo
- Hibernate入门(六)---------HQL语句
- 8.异常_EJ
- 字符串拼接引发的BUG
- (后端)Mybatis中#{}和${}传参的区别及#和$的区别小结(转)
- robot framework笔记(一):环境配置(基于python3)+在pycharm中编写及运行robot脚本
- python 饥饿的小易(网易笔试题)
- Java中线程的同步问题
- 2017 Pig-0.16.0安装