在javascript中的任何级别对​​嵌套的对象数组进行排序

时间:2015-04-11 04:39:23

标签: javascript arrays sorting

我有一些对象数组,有些对象可以在任何级别再次拥有一些数组,所以我想按字母顺序排列所有对象。

前:

{
    "b": [
        {
            "pqr": [
                {
                    "z": "s",
                    "t": "t"
                }
            ],
            "c": "d",
            "q": "c"
        },
        {
            "m": "h",
            "b": "g"
        }
    ]
}

我希望输出为

{
    "b": [
        {
            "c": "d",
            "pqr": [
                {
                    "t": "t",
                    "z": "s"
                }
            ],
            "q": "c"
        },
        {
            "b": "g"
            "m": "h",
        }
    ]
}

JSON.stringify()之后,所以基本上我想要任何级别的排序顺序,数组也可以有对象也需要按排序顺序,我已经经历了其他Stack Overflow问题,但没有找到这个。 我正在尝试使用下面的代码(来自https://stackoverflow.com/a/28565621/1364965,但这段代码没有解决我的问题),但似乎没有用,递归代码似乎不起作用,

function sortObject(obj) {
   var tmpArr = [];
    var tmpKeys = [];
    if (obj instanceof Array) {
        var objLen = obj.length;
        for (var i = 0; i < objLen; i++) {
            if (obj[i] instanceof Array) {
               tmpArr[i] = sortObject(obj[i]);
            } else {
                for (key in obj[i]) {
                    tmpKeys.push(key);
                }  
                tmpKeys.sort();
            }
        }
    }

    var temp = {};
    var keys = [];
    for (var key in obj) {
        keys.push(key);  
    }
    keys.sort();
    for (var index in keys) {
        temp[keys[index]] = sortObject(obj[keys[index]]);
    }
    return temp;
}

如何实现?

0 个答案:

没有答案