簡體   English   中英

排序和減少對象數組 javascript

[英]sort and reduce array of objects javascript

我有一組這樣的對象:

 const array = [ { type: "sale", product: "aaa" }, { type: "rent", product: "bbb" }, { type: "sale", product: "ccc" }];

我用這個 function 來總結數組

 array.reduce((acc, o) => ((acc[o.type] = (acc[o.type] || 0) + 1), acc),{})

結果:

 {sale: 2, rent: 1}

但我想對這個摘要進行排序 object 像這樣升序{rent: 1,sale: 2}我需要使用另一個 function 嗎? 或者修改當前的function又如何呢?

JavaScript 對象通常被認為是鍵/值對的無序集合(是的,有一些注意事項,有關詳細信息,請參閱此問題)。 如果你想要一個有序的結果,你應該使用一個數組來代替。

也就是說,對於具有字符串鍵的對象,鍵按插入順序排序,因此將 object 轉換為數組,根據需要對其進行排序,然后再次將其轉換回 object 就足夠了。

 const array = [ { type: "sale", product: "aaa" }, { type: "rent", product: "bbb" }, { type: "sale", product: "ccc" } ]; const raw = array.reduce((a, v) => (a[v.type] = (a[v.type] || 0) + 1, a), {}); const sorted = Object.fromEntries( Object.entries(raw).sort(([k1, v1], [k2, v2]) => v1 - v2) ); console.log(sorted);

暫無
暫無

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

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