老莫的笔记本  
  
查看: 1027|回复: 1

给JSON数组 排序

[复制链接]

664

主题

881

帖子

5169

积分

超级版主

Rank: 8Rank: 8

积分
5169
发表于 2018-6-26 00:32:16 | 显示全部楼层 |阅读模式
本帖最后由 周大胖子 于 2018-10-19 10:38 编辑
  1. /**
  2. * json对象数组按照某个属性排序:降序排列
  3. * @param {Object} propertyName
  4. */  
  5. function compareDesc(propertyName) {  
  6.     return function(object1, object2) {  
  7.         var value1 = object1[propertyName];  
  8.         var value2 = object2[propertyName];  
  9.         if(value2 < value1) {  
  10.             return -1;  
  11.         } else if(value2 > value1) {  
  12.             return 1;  
  13.         } else {  
  14.             return 0;  
  15.         }  
  16.     }  
  17. }  
  18.   
  19. /**
  20. * json对象数组按照某个属性排序:升序排列
  21. * @param {Object} propertyName
  22. */  
  23. function compareAsc(propertyName) {  
  24.     return function(object1, object2) {  
  25.         var value1 = object1[propertyName];  
  26.         var value2 = object2[propertyName];  
  27.         if(value2 < value1) {  
  28.             return 1;  
  29.         } else if(value2 > value1) {  
  30.             return -1;  
  31.         } else {  
  32.             return 0;  
  33.         }  
  34.     }  
  35. }  
复制代码
将 上面这个 复制到 你的JS中

向下面这样用
  1. 例子:
  2. var students=[{name:"hhhh",age:16},{name:"ggggg",age:17},{name:"dsdsad",age:18}];
  3. students.sort(compareDesc("age"));   //按照年龄降序排列
  4. students.sort(compareAsc("age"));   //按照年龄升序排列
复制代码

回复

使用道具 举报

33

主题

50

帖子

283

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
283
发表于 2018-7-2 23:46:40 | 显示全部楼层
上面的有误! 没有转换成数字  所以封装函数 应该是这么一句:
  1. var value1 = Number(object1[propertyName]);  
  2.       var value2 =  Number(object2[propertyName]);
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表