[英]How to Sort a JS Object Literal?
如果我有這個 JS object 文字:
var foo = {
Sussy: 4,
Billy: 5,
Jimmy: 2,
Sally: 1
};
如何創建一個新的、排序的 object 文字:
var bar = {
Sally: 1,
Jimmy: 2,
Sussy: 4,
Billy: 5
};
回復:如何對 JS Object 進行排序?
回答:你不能。 因此,您需要一個更復雜的數據結構。 你有很多選擇:
我推薦解決方案 3,因為它使用 JS 機制來管理排序。
例子:
// Object holds sort order: (Solution 2)
var foo = {
Suzy: {v: 4, order: 0},
Billy: {v: 5, order: 1},
Jimmy: {v: 2, order: 2},
Sally: {v: 1, order: 3}
};
// Array holds keys: (Solution 3)
var woof = [
{k: 'Suzy', v: 4},
{k: 'Billy', v: 5},
{k: 'Jimmy', v: 2},
{k: 'Sally', v: 1}
];
// Sort the woof array by the key names:
woof.sort(function(a, b) {
return a.k.localeCompare(b.k);
});
// The third key and value:
woof[2].k; // the third key
woof[2].v; // the third value
已編輯:更新代碼以修復錯字。 謝謝你,@Martin Fido
Object 屬性沒有特定順序(順序取決於實現),您無法對屬性進行排序。
您必須保留一組鍵並相應地對其進行排序,例如:
var keys = [];
for(var key in obj) {
if(obj.hasOwnProperty(key)) {
keys.push(key);
}
}
keys.sort(function(a, b) {
return obj[a] - obj[b];
});
現在您可以遍歷數組的值並使用它們來訪問 object 的相應屬性。
事實證明,自 ES2015 以來,object 的屬性順序是可以預測的。 這是驚人的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.