本质上来说,json也是一个数组,只是数组中的每个成员是一个object类型,对json数据进行排序,可根据每个object成员中的固定字段进行排序。
//声明object对象并赋值
var obj = {
name:"猪八戒",
age:13,
gender:"男",
test:{name:"沙僧"}
};
//声明新的object对象,并赋值
var obj = new Object();
obj['name'] = '猪八戒';
obj['age'] = 13;
console.log(obj);
//{name: '猪八戒', age: 13}
特殊数据: 空串(’’), 空值(null),未定义(undefined)的排序。js中自带sort排序,数组类型可以调用sort方法,它是用冒泡排序的方法,遍历所有的数组成员,依次对比相邻数组成员,然后排序。
从小到大的顺序是:’’ < 数字 < 字符串 < null < undefined
let data;
data = ['a', "aA" , "12A", '34a', "b", 123, "b", '', null, undefined, null];
data.sort();
console.log(data);
//['', 123, '12A', '34a', 'a', 'aA', 'b', 'b', null, null, undefined]
data = ['a', "aA" , "12A", '34a', "b", 123, "b", '', null, undefined, null];
data.sort().reverse();
console.log(data);
//[undefined, null, null, 'b', 'b', 'aA', 'a', '34a', '12A', 123, '']
json的排序如下:
//按照json数组里某个field进行排序,order为false时,按desc排序,默认或order为其他值,按asc排序。另,json的field值为null时,按其为最大值处理。即asc时放在最后,desc时放在最前。
function jsonSort(array, field, order) {
// 数组长度小于2 或 没有指定排序字段 或 不是json格式数据
if (array.length < 2 || !field || typeof array[0] !== "object") {
console.log("警告: 当前数组长度小于2 或 没有指定排序字段 或 不是json格式数据。返回原始数据!");
return array;
}
// json中没有field对应的字段
if (array[0][field] == undefined){
console.log("错误: 当前Json没有字段: "+ field);
}else{
//field的内容是数字
if (typeof array[0][field] === "number") {
array.sort(function (x, y) { return x[field] - y[field] });
}
//field的内容是字符串
else if (typeof array[0][field] === "string") {
//当field的值为null时,按当成大值处理
array.sort(function (x, y) {
if (x[field] == null ) return 1
else if (y[field] == null) return -1
else{
return x[field].localeCompare(y[field])
}
});
}
order == false ? order = order : order = true
if(order) return array
else return array.reverse()
}
}
testJson = [
{
"id": "id1",
"name": "name1"
},{
"id": "id2",
"name": null
},{
"id": "id3",
"name": null
},{
"id": "id4",
"name": "aname"
}
]
console.log(testJson);
jsonSort(testJson, "name")
console.log(testJson);
/**
[
{ id: 'id1', name: 'name1' },
{ id: 'id2', name: null },
{ id: 'id3', name: null },
{ id: 'id4', name: 'aname' }
]
[
{ id: 'id4', name: 'aname' },
{ id: 'id1', name: 'name1' },
{ id: 'id2', name: null },
{ id: 'id3', name: null }
]
**/
参考:
Object类型:JavaScript语法引用数据类型之Object(对象)
Json排序:Javascript:json数据根据某一个字段进行排序
null值:js中undefined,null和typeof运算符
含有null的数组排序:数组排序,空值一直排最后
版权声明:本文为lxzi101410原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。