Javascript基于值对键值对象进行排序

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

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

请让我知道更好的解决方案……

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

有关更多信息,请参阅此处: JavaScript保证对象属性订单?

您可能也对John Resig对此事所说的话感兴趣。


如果需要可排序列表,则必须将其存储为对象数组:

 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方法:

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

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

 var obj = { "1": "google", "2": "yahoo", "3": "msn", "4": "stackoverflow", "5": "github", "6": "jsfiddle", "7": "amazon", "8": "ebay" }; var arr = []; for (var key in obj) { if (obj.hasOwnProperty(key)) { arr.push(obj[key]); } } alert(arr.sort()); 

这将按升序对您的值进行排序。 让我给一些时候会回复你如何将其转换为一个对象。