Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中对任意级别的嵌套对象数组进行排序_Javascript_Arrays_Sorting - Fatal编程技术网

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

在javascript中对任意级别的嵌套对象数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一些对象数组,一些对象在任何级别都可以有一些数组,所以我希望所有对象都按字母顺序排列 例: 我希望输出为 { "b": [ { "c": "d", "pqr": [ { "t": "t", "z": "s" } ], "q": "c

我有一些对象数组,一些对象在任何级别都可以有一些数组,所以我希望所有对象都按字母顺序排列

例:

我希望输出为

{
    "b": [
        {
            "c": "d",
            "pqr": [
                {
                    "t": "t",
                    "z": "s"
                }
            ],
            "q": "c"
        },
        {
            "b": "g"
            "m": "h",
        }
    ]
}
在JSON.stringify之后,基本上我想要在任何级别上的排序顺序,数组也可以有同样需要按排序顺序排序的对象,我已经讨论了其他堆栈溢出问题,但没有发现这一点。 我试着使用下面的代码,但是这段代码并没有解决我的问题,但似乎不起作用,递归代码似乎不起作用

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;
}

如何实现它?

对象不维持秩序。它基本上是一个无序的散列映射。它的意思是-你不能对它们进行排序。我认为OP想要获取那个对象并将输出排序为一个字符串,这是可能的。不过,这似乎是一个习题集问题。到目前为止,除了搜索答案,您还尝试了什么?您可以在技术上使用字符串格式,而不使用普通JavaScript对象……但这将非常困难。基本上,您必须实现Python的OrderedDict,然后编写自己的toString方法。我希望你有耐心@JasonCust,我已经更新了我尝试过的代码,但是递归似乎有一些问题…@zerkms它们没有被指定为,但是实际的实现可能在足够的情况下是稳定的,可以让一些东西工作起来P
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;
}