Javascript基于值对键值对象进行排序 [英] Javascript Sort key value pair object based on value

查看:87
本文介绍了Javascript基于值对键值对象进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像下面这样的对象。尝试根据值按升序重新排列。与Javascript数组排序方法类似。

I have an object like below. Trying to rearrange it in ascending order based on value. Similar to Javascript array sort method.

    var masterList = {
    "1": "google",
    "2": "yahoo",
    "3": "msn",
    "4": "stackoverflow",
    "5": "github",
    "6": "jsfiddle",
    "7": "amazon",
    "8": "ebay"
}

请告诉我更好的解决方案...

Please let me know the better solution...

推荐答案

JavaScript对象没有订单。即使大多数浏览器按照相同的顺序迭代创建属性,也无法保证,因此对象不支持排序。

JavaScript objects have no order. Even though most browsers do iterate in the same order the properties were created, there's no guarantee, so sorting is not supported on objects.

有关详细信息,请参阅此处: JavaScript是否保证对象属性订单?

See here for more info: Does JavaScript Guarantee Object Property Order?

您可能还对 John Resig必须说明的内容感兴趣问题。

You might also be interested in what John Resig has got to say on the matter.

如果你需要一个可排序列表,你必须将它存储为一个对象数组:

If you need a sort-able list, you'll have to store it as an array of objects:

var masterList = [
    { key: 1, val: "google" },
    { key: 2, val: "yahoo" },
    { key: 3, val: "msn" },
    { key: 4, val: "stackoverflow" },
    { key: 5, val: "github" },
    { key: 6, val: "jsfiddle" },
    { key: 7, val: "amazon" },
    { key: 8, val: "ebay" }
];

然后,要对它们进行排序,只需使用常规数组的 sort 方法:

Then, to sort them, just use the regular array's sort method:

masterList = masterList.sort(function (a, b) {
    return a.val.localeCompare( b.val );
});

这是小提琴: http://jsfiddle.net/ASrUD/

这篇关于Javascript基于值对键值对象进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆