gpt4 book ai didi

javascript - 按不同数组中设置的属性类型分隔项目

转载 作者:行者123 更新时间:2023-12-03 01:23:32 25 4
gpt4 key购买 nike

我试图通过在 Restful API 中返回的名为“ProductGroupName”的属性来分隔项目。我想循环遍历并为每个部分创建一个单独的数组,其中每个部分中列为该属性的项目。

我可以在服务器端操作 SQL 来更改结果的给出方式,但这会导致问题;这是一个示例结果:

{ 
"message": "Success",
"data": [
{
"StockID": 69323,
"TradeName": "NAN OPTIPRO HA 1 GLD 800G",
"ProductGroupName": "BABY FOODS",
"SOH": 24,
"MinimumSOH": 0,
"Retail": 3199,
"AverageRetail": 0,
"Cost": 2848,
"RealCost": 2791,
"Reorder": true,
"Message": null,
"ListCost": null,
"Markup": 12,
"PLU": "476358",
"NoDiscount": true
},
{
"StockID": 18057,
"TradeName": "NAN PRO 2 GLD 800G",
"ProductGroupName": "BABY FOODS",
"SOH": 19,
"MinimumSOH": 0,
"Retail": 2050,
"AverageRetail": 0,
"Cost": 2301,
"RealCost": 1918,
"Reorder": false,
"Message": null,
"ListCost": null,
"Markup": -10,
"PLU": "436178",
"NoDiscount": true
},
{
"StockID": 74206,
"TradeName": "OPTIFAST VLCD SHAKE BANANA 12X53G (NEW)",
"ProductGroupName": "WEIGHT LOSS",
"SOH": 6,
"MinimumSOH": 0,
"Retail": 4799,
"AverageRetail": 0,
"Cost": 3937,
"RealCost": 3086,
"Reorder": true,
"Message": null,
"ListCost": null,
"Markup": 10,
"PLU": "294454",
"NoDiscount": true
}],
}

不过,这是所有结果的标准输出,因此更改结果会使我编写 REST 服务的方式变得复杂。

对这些项目进行分组的最佳方式是什么?我正在考虑循环遍历它们,当找到新的“ProductGroup”时,会创建一个新的数组并插入该项目,但这似乎不是很优化,我想知道是否有更好的方法来实现此目的.

最佳答案

按照您在问题中描述的方式组织请求结果的最简单方法之一是将 Array.prototype.reduce 应用于结果的“数据”:

result.data.reduce((acc, item) => {
const name = item['ProductGroupName'];
acc[name] = acc[name] || [];
acc[name].push(item);
return acc;
}, {});

通过这种方法,您将获得以下对象

{BABY FOODS: Array(2), WEIGHT LOSS: Array(1)}

关于javascript - 按不同数组中设置的属性类型分隔项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51645945/

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