排序JSON字典字母顺序值
问题描述:
我已经字典下列字典,我因为我没有权力在服务器端使用这种格式排序JSON字典字母顺序值
{"1":{"aov":0,"oo":1,"ot":"Cem-Merve","pi":87},"2":{"aov":100,"oo":2,"ot":"Murat-Pelin","pi":88},"3":{"aov":0,"oo":3,"ot":"Fevzi-Azbiye","pi":85},"4":{"aov":0,"oo":4,"ot":"Burak-Gizem","pi":86},"21":{"aov":100,"oo":21,"ot":"Murat","pi":84,"ro":2},"22":{"aov":0,"oo":22,"ot":"Pelin","pi":83,"ro":2}}
我需要它使用JavaScript通过按键按字母顺序排序要像
{"1":{"aov":0,"oo":1,"ot":"Cem-Merve","pi":87},"2":{"aov":100,"oo":2,"ot":"Murat-Pelin","pi":88},"21":{"aov":100,"oo":21,"ot":"Murat","pi":84,"ro":2},"22":{"aov":0,"oo":22,"ot":"Pelin","pi":83,"ro":2},"3":{"aov":0,"oo":3,"ot":"Fevzi-Azbiye","pi":85},"4":{"aov":0,"oo":4,"ot":"Burak-Gizem","pi":86}}
我已经试过类似的东西,但是没有希望:
function sortObject(o) {
var sorted = {},
key, a = [];
for (key in o) {
if (o.hasOwnProperty(key)) {
a.push(key);
}
}
a.sort();
for (key = 0; key < a.length; key++) {
sorted[a[key]] = o[a[key]];
}
return sorted;
}
任何想法如何执行该操作?
答
正如其他人在评论中指出的,一个对象的属性不能被排序。你可以做的是产生一个对象属性的有序数组,并迭代该数组以访问你想要的对象属性。你基本上已经在你的示例代码中做了这个 - 你只是试图把它做得太过分了。
function getObjectKeysAlphabetical(obj) {
var keys = [],
key;
for (key in obj) {
if (obj.hasOwnProperty(key))
keys.push(key);
}
keys.sort();
return keys;
}
var obj = {}; //Your object here.
var keys = getObjectKeysAlphabetical(obj)
i = 0, key = null, val = null;
//Iterate the array of sorted keys.
for (i = 0; i < keys.length; i++) {
key = keys[i];
val = obj[key]; //Get the value of the property here.
}
+0
工作像一个魅力与一些编辑,以符合我的要求,非常感谢主意。 – ImadBakir
的JavaScript将是一个良好的开端。尝试一下,当你卡住时回复。 – crush
我被卡住了,这就是为什么我问这个 – ImadBakir
JavaScript对象不可排序,您需要将它转换为Array,然后使用Array.prototype.sort对项目进行排序。 –