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