繁体   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