nodejs中的json数据根据字段排序

本质上来说,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版权协议,转载请附上原文出处链接和本声明。