我有像JSON一样的
var MyJSON = {
"item1" : "value1",
"item2" : {
"somedata": "somevalue",
"entries":[
{
"sortitem":"ABC",
},
{
"sortitem":"PQR",
},
{
"sortitem":"XYZ",
}
]
}
"item3" : {
"somedata": "somevalue",
"entries":[
{
"sortitem":"abc",
},
{
"sortitem":"pqr",
},
{
"sortitem":"xyz",
}
]
}
};
我必须在“sortitem”上对MyJSON进行排序,而不会改变结构并且不会丢失数据。
答案 0 :(得分:0)
也许这会有所帮助,
(function (data, sField){
function recurse (dt){
for(prop in dt){
if(Object.hasOwnProperty.call(dt, prop)){
if(Object.prototype.toString.call(dt[prop]) === '[object Array]'){
dt[prop].sort(function(a, b){
if(!a[sField] || !b[sField]) return 0;
return a[sField].localeCompare(b[sField]);
});
}
else if(Object.prototype.toString.call(dt[prop]) === '[object Object]'){
recurse(dt[prop]);
}
}
}
}
recurse(data);
})(MyJSON, 'sortitem'); //data and sortfield
希望这会有所帮助。