Json对象通过使用javascript升序排序

时间:2013-06-05 08:34:34

标签: javascript jquery json

我有一个json对象,我想按升序排序

  [{ d: "delte the text" }, { c: "copy the text" }]

密钥dc是动态创建的,下次可能会更改。我如何将其分类为

[{ c: "copy the text" }, { d: "delte the text" }]

请帮助我如何做到这一点。 谢谢!

1 个答案:

答案 0 :(得分:1)

要使用Array.sort对数组进行排序,并使用适当的比较函数作为参数。比较函数接受两个参数,在这种情况下,它们应该是只有一个属性的对象。您希望根据该属性的名称进行排序。

使用Object.keys获取对象的属性名称最方便,因此我们有这个比较函数:

function(x, y) { 
    var keyX = Object.keys(x)[0], 
        keyY = Object.keys(y)[0]; 

    if (keyX == keyY) return 0; 
    return keyX < keyY ? -1 : 1;
}

可以像这样使用:

var input = [{ d: "delete the text" }, { c: "copy the text" } ];
var sorted = input.sort(function(x, y) { 
    var keyX = Object.keys(x)[0], 
        keyY = Object.keys(y)[0]; 

    if (keyX == keyY) return 0; 
    return keyX < keyY ? -1 : 1;
});

<强> See it in action

请注意Object.keys需要一个相当现代的浏览器(特别是IE版本至少9个);否则你需要写一些这样的东西:

var keyX, keyY, name;
for (name in x) { keyX = name; break; }
for (name in y) { keyY = name; break; }

<强> See it in action