目前我有一小段代码循环遍历json对象:
for (var key in json_object) {
if (json_object.hasOwnProperty(key)) {
var value = key; //e.g. 50_100, 1000_2000, 20_50 etc
}
}
我稍后会将这些值输出到列表中。但问题是这些值现在不是任何顺序。
我希望能够按顺序整理这些值。所以我的问题是,这是可能的,如果是这样的话?
谢谢!
答案 0 :(得分:1)
在javascript中,对象属性不能保证特定的顺序,因此如果要维护顺序,则可能需要将对象属性写入对象数组中。
这可能是这样的:
var object_array = [];
// map properties into array of objects
for (var key in json_object) {
if (json_object.hasOwnProperty(key)) {
object_array.push({
'key': key;
'value': value;
});
}
}
// sort array of objects
object_array.sort(function(a,b) {
// note that you might need to change the sort comparison function to meet your needs
return (a.value > b.value);
}
答案 1 :(得分:0)
阅读完所有解决方案后,我意识到我的解决方案是错误的。 Object.keys仅适用于获取一组键,因此Mike Brant的解决方案是正确的,但需要一点修复,因为value
不是变量。最后,这里有一个基于他的解决方案的固定解决方案+来自评论的请求排序:
var arr = [];
for (var key in json_object) {
if (json_object.hasOwnProperty(key)) {
arr.push({
'key': key;
'value': json_object[key];
});
}
}
// this will sort by the first part of the string
arr.sort(function(a, b) {
return a.key.split('_')[0] - b.key.split('_')[0];
}
希望这有助于......: - )