我有一些对象数组,有些对象可以在任何级别再次拥有一些数组,所以我想按字母顺序排列所有对象。
前:
{
"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;
}
如何实现?