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;
        }
    }
}

最新文章

  1. How to set up a basic working Appium test environment
  2. Weka链接Mysql数据库
  3. xfire找不到services.xml
  4. (DP)Best Time to Buy and Sell Stock
  5. 【Android进阶】让程序运行效率更高的编程技巧总结
  6. Java 常用List集合使用场景分析
  7. ecshop 商品属性显示方法
  8. C#控件数组批量生成控件
  9. Lecture6.概率极限理论
  10. docker的安装和升级
  11. RabbitMQ安装笔记
  12. java学习--修饰符
  13. EF 下如何更新数据表数据
  14. HTML5-网页添加视频-菜鸟笔记
  15. SQLServer 查询数据死锁语句
  16. 监控 Redis 服务方案
  17. Linux系统排查——CPU负载篇
  18. Windows 10利用自带的 Hyper-v 安装Linux
  19. ANDROID L——Material Design具体解释(动画篇)
  20. Solr中的一些查询参数

热门文章

  1. redis实现高并发下的抢购/秒杀功能
  2. 【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo
  3. Hibernate入门(六)---------HQL语句
  4. 8.异常_EJ
  5. 字符串拼接引发的BUG
  6. (后端)Mybatis中#{}和${}传参的区别及#和$的区别小结(转)
  7. robot framework笔记(一):环境配置(基于python3)+在pycharm中编写及运行robot脚本
  8. python 饥饿的小易(网易笔试题)
  9. Java中线程的同步问题
  10. 2017 Pig-0.16.0安装