gpt4 book ai didi

javascript - LINQ Group by & Select FirstOrDefault() 的 Lodash 或 JavaScript 等价物

转载 作者:行者123 更新时间:2023-11-30 14:02:53 25 4
gpt4 key购买 nike

我有商店的列表,其中有AuthorizationOrder , 我需要拉 firstOrDefault JavaScript 中分组集合的值。

eg: storeDto : { StoreNumber = 1 , Warehouse = 4201, AuthorizationOrder = 1 },
{ StoreNumber = 2 , Warehouse = 4201, AuthorizationOrder = 2 },
{ StoreNumber = 1 , Warehouse = 4202, AuthorizationOrder = 2 },
{ StoreNumber = 1 , Warehouse = 4203, AuthorizationOrder = 3 },
{ StoreNumber = 2 , Warehouse = 4207, AuthorizationOrder = 1 }

使用 LINQ:

warehouseStoreList = warehouseStoreList.GroupBy(x => x.StoreNumber)
.Select(g => g.OrderBy(x => x.AuthorizationOrder).FirstOrDefault()).ToList();


Result: { StoreNumber = 1 , Warehouse = 4201, AuthorizationOrder = 1 },
{ StoreNumber = 2 , Warehouse = 4207, AuthorizationOrder = 1 }

如何使用 Lodash 执行类似操作或 JavaScript 通过在 store 上分组来提取数据,在 AuthorizationOrder 上订购后获得第一个值.

此外,获取带有关联商店的仓库。请参阅使用 LINQ 实现的 fiddle

fiddle :https://dotnetfiddle.net/glC1ij

想用 JavaScript 或 Lodash 实现同样的事情。

最佳答案

你可以使用 reduce根据 StoreNumber 进行分组。创建一个累加器,每个唯一的 StoreNumber 作为键,如下所示:

{
"1": {
"StoreNumber": 1,
"Warehouse": 4201,
"AuthorizationOrder": 1
},
"2": {
"StoreNumber": 2,
"Warehouse": 4207,
"AuthorizationOrder": 1
}
}

如果 key 不存在或当前 AuthorizationOrder 小于累加器的值,则更新值。然后使用 Object.values()只获取数组的值:

const array = [{StoreNumber:1,Warehouse:4201,AuthorizationOrder:1},{StoreNumber:2,Warehouse:4201,AuthorizationOrder:2},{StoreNumber:1,Warehouse:4202,AuthorizationOrder:2},{StoreNumber:1,Warehouse:4203,AuthorizationOrder:3},{StoreNumber:2,Warehouse:4207,AuthorizationOrder:1}]

const grouped = array.reduce((acc, o) => {
let group = acc[o.StoreNumber];

if(!group || group.AuthorizationOrder > o.AuthorizationOrder)
acc[o.StoreNumber] = o;

return acc;
}, {})

console.log(Object.values(grouped))

关于javascript - LINQ Group by & Select FirstOrDefault() 的 Lodash 或 JavaScript 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56006871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com