簡體   English   中英

Javascript 根據值對鍵值對對象進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM