循环遍历json对象并按顺序排序

时间:2016-03-16 13:47:10

标签: javascript jquery json

目前我有一小段代码循环遍历json对象:

for (var key in json_object) {
    if (json_object.hasOwnProperty(key)) {
        var value       = key; //e.g. 50_100, 1000_2000, 20_50 etc
    }
}

我稍后会将这些值输出到列表中。但问题是这些值现在不是任何顺序。

我希望能够按顺序整理这些值。所以我的问题是,这是可能的,如果是这样的话?

谢谢!

2 个答案:

答案 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];  
}

希望这有助于......: - )