[英]Lodash: How to group, then sort collection by more than one property
How can I group, then sort my collection by more than one property?如何分组,然后按多个属性对我的收藏进行排序?
My collection looks like我的收藏看起来像
const list = [
{
transactionId: "Id1",
amount: 100,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id2",
amount: 5,
timestamp: 1619075704230,
user: "username2",
},
{
transactionId: "Id3",
amount: 8,
timestamp: 1619075704230,
user: "username3",
},
{
transactionId: "Id4",
amount: 12,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id5",
amount: 200,
timestamp: 1619075704230,
user: "username7",
},
{
transactionId: "Id6",
amount: 99,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id7",
amount: 78,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id8",
amount: 12,
timestamp: 1619075704230,
user: "username9",
},
];
I want to group the list by user
attribute, and then sort sort the received arrays by timestamp
and amount
fields.我想按
user
属性对列表进行分组,然后按timestamp
和amount
字段对收到的 arrays 进行排序。
Exactly response should be like确切的反应应该是
{
....
"username1": [
{
transactionId: "Id1",
amount: 100,
timestamp: 1619075704230,
user: "username1",
},
,
{
transactionId: "Id6",
amount: 99,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id7",
amount: 78,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id4",
amount: 12,
timestamp: 1619075704230,
user: "username1",
}
]
...
}
You can do it by using groupBy and orderBy functions.您可以使用groupBy和orderBy函数来完成。
const list = [
{
transactionId: "Id1",
amount: 100,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id2",
amount: 5,
timestamp: 1619075704230,
user: "username2",
},
{
transactionId: "Id3",
amount: 8,
timestamp: 1619075704230,
user: "username3",
},
{
transactionId: "Id4",
amount: 12,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id5",
amount: 200,
timestamp: 1619075704230,
user: "username7",
},
{
transactionId: "Id6",
amount: 99,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id7",
amount: 78,
timestamp: 1619075704230,
user: "username1",
},
{
transactionId: "Id8",
amount: 12,
timestamp: 1619075704230,
user: "username9",
},
];
const sorted = _.orderBy(list, ['timestamp', 'amount'], ['desc', 'desc']);
const result = _.groupBy(sort, 'user');
console.log('Result: ', result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.