[英]Lodash: How to group, then sort collection by more than one property
如何分組,然后按多個屬性對我的收藏進行排序?
我的收藏看起來像
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",
},
];
我想按user
屬性對列表進行分組,然后按timestamp
和amount
字段對收到的 arrays 進行排序。
確切的反應應該是
{
....
"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",
}
]
...
}
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);
如果你使用lodash
你可以做類似的事情
let grouped = _.groupBy(list,'user');
let ordered = {};
for (const [key, value] of Object.entries(grouped)) {
ordered[key] = _.orderBy(value,['timeStamp','amount']);
}
console.log(orderedArray);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.