簡體   English   中英

按字母順序對 Javascript object 進行排序

[英]Sort Javascript object by value alphabetically

我有一個 JS object 如下:

var obj = {"00:11:22:33:44:55" : "AddressB", "66:77:88:99:AA:BB" : "AddressA", "55:44:33:22:11:00" : "AddressC", "AA:BB:CC:DD:EE:FF" : "AddressD"};

以下代碼通過鍵按字母順序對其進行排序:

sorted = Object.keys(obj)
.sort()
.reduce(function (accSort, keySort) 
{
    accSort[keySort] = obj[keySort];
    return accSort;
}, {});

console.log(sorted);

產生output:

{"00:11:22:33:44:55": "地址 B", "55:44:33:22:11:00": "地址 C", "66:77:88:99:AA:BB" :“地址A”,“AA:BB:CC:DD:EE:FF”:“地址D”}

如何按值按字母順序對 object 進行排序,因此 output 是:

{"66:77:88:99:AA:BB": "地址 A", "00:11:22:33:44:55": "地址 B", "55:44:33:22:11:00" :“地址C”,“AA:BB:CC:DD:EE:FF”:“地址D”}

您需要先keysvalues對鍵進行排序,然后使用.reduce創建生成的有序 object:

 const obj = { "00:11:22:33:44:55": "AddressB", "66:77:88:99:AA:BB": "AddressA", "55:44:33:22:11:00": "AddressC", "AA:BB:CC:DD:EE:FF": "AddressD" }; const sorted = Object.keys(obj).sort((a,b) => obj[a].localeCompare(obj[b])).reduce((acc,key) => { acc[key] = obj[key]; return acc; }, {}); console.log(sorted);

使用Object.entries()獲取鍵和值的二維數組。 按值排序,然后使用reduce()創建新的 object 。

 var obj = {"00:11:22:33:44:55": "AddressB", "66:77:88:99:AA:BB": "AddressA", "55:44:33:22:11:00": "AddressC", "AA:BB:CC:DD:EE:FF": "AddressD"}; sorted = Object.entries(obj).sort(([key1, val1], [key2, val2]) => val1.localeCompare(val2)).reduce(function(accSort, [key, val]) { accSort[key] = val; return accSort; }, {}); console.log(sorted);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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