我有一个像下面这样的对象。尝试根据值按升序重新排列它。类似于 Javascript 数组排序方法。
var masterList = {
"1": "google",
"2": "yahoo",
"3": "msn",
"4": "stackoverflow",
"5": "github",
"6": "jsfiddle",
"7": "amazon",
"8": "ebay"
}
请让我知道更好的解决方案...
我有一个像下面这样的对象。尝试根据值按升序重新排列它。类似于 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());
这将按升序对您的值进行排序。让我给你一些时间会告诉你如何将它转换为一个对象。
var masterList = {
"2": "yahoo",
"3": "msn",
"4": "stackoverflow",
"5": "github",
"6": "jsfiddle",
"7": "amazon",
"8": "ebay",
"1": "google",
}
var masterList_ = {}
Object.keys(masterList).sort().forEach(a=>masterList_[a]=masterList[a])
console.log(masterList_)