[英]Javascript Sort key value pair object based on value
我有一個像下面這樣的對象。 嘗試根據值按升序重新排列它。 類似於 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_)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.