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