jquery 遍历JSON对象并按顺序排序

8tntrjer  于 12个月前  发布在  jQuery
关注(0)|答案(3)|浏览(199)

目前我有一小段代码,它通过一个json对象循环:

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

字符串
我稍后会把这些值输出到一个列表中,但问题是,这些值现在没有任何顺序。
我希望能够将这些值按顺序排序,所以我的问题是,这可能吗?如果可能,怎么做?
谢谢你,谢谢

aelbi1ox

aelbi1ox1#

在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);
}

字符串

ecbunoof

ecbunoof2#

在阅读了所有的解决方案后,我意识到我的解决方案是错误的。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];  
}

字符串
希望这对你有帮助:-)

a0x5cqrl

a0x5cqrl3#

以下修复了我在其他解决方案中发现的eslint问题:

var arr = [];
Object.keys(json_object).forEach(function(key) {
  arr.push({
    'key': key,
    'value': json_object[key]
  });  
})

字符串

相关问题