博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript-json数组排序
阅读量:6705 次
发布时间:2019-06-25

本文共 1446 字,大约阅读时间需要 4 分钟。

排序是开发中不可避免的,最近遇到一个需求需要将JSON数组排序,需求比较简单,实现起来也没什么难度,简单记录下过程:

首先我们需要明白的JavaScript本身的排序是可以传入函数比较的,数组排序如下:

 

1
2
3
4
5
var 
arr = [25, 2, 32, 12, 72, 51, 65, 97, 60, 20];
function descend(a, b) {
    
return 
a<b ? 1 : -1;
}
arr.sort(descend);

 

输出结果:

1
[ 97, 72, 65, 60, 51, 32, 25, 20, 12, 2 ]
//博客园-FlyElephant

JSON数组和数组方法类似,对比如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var 
json = [{
    
name: 
'keso'
,
    
age: 25
}, {
    
name: 
'博客园-FlyElephant'
,
    
age: 24
}, {
    
name: 
'http://www.cnblogs.com/xiaofeixiang/'
,
    
age: 22
}];
 
function ascend(a, b) {
    
return 
(a.age > b.age) ? 1 : -1;
}
json.sort(ascend);
console.log(json);

输出结果:

1
2
3
[ { name: 
'http://www.cnblogs.com/xiaofeixiang/'
, age: 22 },
  
{ name: 
'博客园-FlyElephant'
, age: 24 },
  
{ name: 
'keso'
, age: 25 } ]

如果想更好的封装一下可以写成类的形式,类写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function JsonSort(obj, field, sortby) {
    
this
.obj = obj;
    
this
.field = field;
    
this
.sortby = sortby;
}
 
JsonSort.prototype.sort= function() {
    
var 
$
this
=
this
;
    
var 
ascend = function(a, b) {
        
return 
a[$
this
.field] > b[$
this
.field] ? 1 : -1;
    
};
    
var 
descend = function(a, b) {
        
return 
a[$
this
.field] > b[$
this
.field] ? -1 : 1;
    
};
    
if 
(
this
.sortby == 
"ascend"
) {
        
this
.obj.sort(ascend);
    
else 
{
        
this
.obj.sort(descend);
    
}
};
var 
jsonSort=
new 
JsonSort(json,
'age'
,
'ascend'
);
jsonSort.sort();
console.log(json);

如果你有更好的方法,欢迎探讨~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/5048600.html,如需转载请自行联系原作者

你可能感兴趣的文章
hdu1501 Zipper--DFS
查看>>
spring揭秘 读书笔记 二 BeanFactory的对象注冊与依赖绑定
查看>>
P1144 最短路计数
查看>>
SiteMesh基础教程
查看>>
go git 安装配置与使用 (windows 7 64bit)
查看>>
Eclipse安装Gradle插件
查看>>
c语言转义字符
查看>>
ERR_NAME_NOT_RESOLVED错误的解决
查看>>
(转)RabbitMQ学习之集群部署
查看>>
bzoj-2219 数论之神
查看>>
C++11中的小细节--字符串的原始字面量
查看>>
POJ 1151 HDU 1542 Atlantis(扫描线)
查看>>
Android Studio2.0 Beta 2版本号更新说明及注意事项
查看>>
【LeetCode-面试算法经典-Java实现】【066-Plus One(加一)】
查看>>
【Django】 gunicorn部署纪要
查看>>
Windows Redis默认配置文件,Redis配置不生效解决方案
查看>>
Oracle oledb 打包并集成到程序安装包(VC ADO訪问Oracle)
查看>>
Android Studio 中删除项目和项目找回------ Project Structure的使用
查看>>
ios开发动物园管理 继承多态的实现
查看>>
本地aar文件引用
查看>>