![](/img/trans.png)
[英]JavaScript: Sort an array of objects by a numeric property in each object
[英]Sort a JavaScript array of named objects by numeric named property
我已經看到了多個類似的問題,但我不知道如何將建議的解決方案應用於稍微不同的數據結構。
這是一個命名對象數組,需要按屬性count
進行數字排序:
const myArray = [
{ABC:{label:'ABC', count:3}},
{EFG:{label:'EFG', count:10}},
{DEF:{label:'DEF', count:9}},
{FGH:{label:'FGH', count:1}}
]
排序后的結果數組應該是這樣的:
myArray = [
{FGH:{label:'FGH', count:1}},
{ABC:{label:'ABC', count:3}},
{DEF:{label:'DEF', count:9}},
{EFG:{label:'EFG', count:10}}
]
如果對象沒有名稱(ABC、DEF 等),則MDN web 文檔(以及此處的多個類似問題)包含對此類數組進行排序的解決方案。
也就是說,考慮一個稍微不同的未命名對象數組:
const myArray1 = [
{label:'ABC', count:3},
{label:'EFG', count:10},
{label:'DEF', count:9},
{label:'FGH', count:1}
]
這個單線工作: myArray1.sort((a, b) => a.count - b.count)
獲得:
myArray1 = [
{label:'FGH', count:1},
{label:'ABC', count:3},
{label:'DEF', count:9},
{label:'EFG', count:10}
]
我知道處理這個問題需要一個更復雜的 function 表達式,但我只是不太了解這種語言(還)無法弄清楚。
在比較之前先取第一個(也是唯一的)object 值。
const myArray = [ {ABC:{label:'ABC', count:3}}, {EFG:{label:'EFG', count:10}}, {DEF:{label:'DEF', count:9}}, {FGH:{label:'FGH', count:1}} ] const getCount = obj => Object.values(obj)[0].count; myArray.sort((a, b) => getCount(a) - getCount(b)); console.log(myArray);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.