GitCode 开源社区
js json数组按某一字段排序
js json数组按某一字段排序
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
一.首先给大家介绍js中内置的 sort() 方法
此方法默认是按字母顺序对数组中的元素进行排序的,说得更精确点,是按照字符编码的顺序进行排序。
看如下例子:
当数组中元素为 数字类型 时,排序结果与我们设想的完全不同,因为默认是按照字符编码的顺序进行排序的。
解决方案:sort() 方法接收一个可选参数(此参数必须是函数),我们可以自己定义排序规则,如下图
二. 对 json 排序的具体实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/*
* @description 根据某个字段实现对json数组的排序
* @param array 要排序的json数组对象
* @param field 排序字段(此参数必须为字符串)
* @param reverse 是否倒序(默认为false)
* @return array 返回排序后的json数组
*/
function
jsonSort(array, field, reverse) {
//数组长度小于2 或 没有指定排序字段 或 不是json格式数据
if
(array.length < 2 || !field ||
typeof
array[0] !==
"object"
)
return
array;
//数字类型排序
if
(
typeof
array[0][field] ===
"number"
) {
array.sort(
function
(x, y) {
return
x[field] - y[field]});
}
//字符串类型排序
if
(
typeof
array[0][field] ===
"string"
) {
array.sort(
function
(x, y) {
return
x[field].localeCompare(y[field])});
}
//倒序
if
(reverse) {
array.reverse();
}
return
array;
}
|
PS:JS中:json对象数组按对象属性排序
1
2
3
4
5
6
7
8
9
10
11
12
13
|
var
array = [
{name:
'a'
, phone: 1},
{name:
'b'
, phone: 5},
{name:
'd'
, phone: 3},
{name:
'c'
, phone: 4}
]
array.sort(getSortFun(
'desc'
,
'phone'
));
function
getSortFun(order, sortBy) {
var
ordAlpah = (order ==
'asc'
) ?
'>'
:
'<'
;
var
sortFun =
new
Function(
'a'
,
'b'
,
'return a.'
+ sortBy + ordAlpah +
'b.'
+ sortBy +
'?1:-1'
);
return
sortFun;
}
alert(JSON.stringify(array));
|
数组本身有sort方法,可以指定排序函数,因此可以动态生成一个排序函数来完成对按指定对象属性排序的需求;
注意:sort后原数组序列会发生变化!!
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
- 6174
- 0
- 0
- 0
扫一扫分享内容
- 分享
已为社区贡献1条内容
回到
顶部
顶部
所有评论(0)