【问题标题】:Sort JSON dictionary of dictionaries alphabetically by value按值的字母顺序对字典的 JSON 字典进行排序
【发布时间】:2014-01-26 17:11:13
【问题描述】:

我有以下字典,我必须使用这种格式因为我没有服务器端的权力

{"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;
}

任何想法我该如何执行?

【问题讨论】:

  • Javascript 将是一个好的开始。试一试,遇到困难时再回帖。
  • 我已经被卡住了,这就是我问这个的原因
  • JavaScript 对象不可排序,您需要将其转换为 Array,然后使用 Array.prototype.sort 对项目进行排序。
  • 不能对对象的属性进行排序。
  • 这个答案应该让你朝着正确的方向前进:stackoverflow.com/a/5200010/1402923

标签: javascript jquery sorting dictionary alphabetical


【解决方案1】:

正如其他人在 cmets 中指出的那样,无法对对象的属性进行排序。相反,您可以做的是生成对象属性的排序数组,并迭代该数组以按照您希望的顺序访问对象属性。您基本上已经在您的示例代码中做到了这一点 - 您只是试图走得太远。

See jsFiddle

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.
}

【讨论】:

  • 像一个魅力一样进行了一些编辑以满足我的要求,非常感谢这个想法。
猜你喜欢
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2021-12-20
  • 2020-01-22
相关资源
最近更新 更多