首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按在不同数组中设置的属性类型分隔项目

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

Stack Overflow用户
提问于 2018-08-02 13:15:04
回答 1查看 21关注 0票数 0

我正在尝试通过restful API中返回的名为'ProductGroupName‘的属性来分隔项目。我想循环遍历并为每个节创建一个单独的数组,每个节中的项都作为该属性列出。

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

代码语言:javascript
运行
复制
{ 
"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‘时,一个新的数组被创建并插入那个项目,但这似乎并不是很优化,我想知道是否有更好的方法来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 13:25:37

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

代码语言:javascript
运行
复制
result.data.reduce((acc, item) => {
  const name = item['ProductGroupName'];
  acc[name] = acc[name] || [];
  acc[name].push(item);
  return acc;
}, {});

使用这种方法,您将获得以下对象

代码语言:javascript
运行
复制
{BABY FOODS: Array(2), WEIGHT LOSS: Array(1)}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51645945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档