我现在有一个项目数组,看起来有点像这样:我想按类别查找对项目进行分组,但有一个小问题,类别查找可能是一个数组,这样父项目2将被列出两次(一次在我的cat 中),一次在其他东西中).我try 使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/groupBy,但它似乎无法处理这个问题?

     [
           {
                "tool_id": "4-19de-454673d9-9ef5-4545",
                "somekey" : "Parent Item 2"
                "categoryLookup": [
                    {
                        "category_name": "New Item",
                    }
                ]
            },
            {
                "tool_id": "be7ea707-19de-43d9-9ef1-d4a3ff79f77a",
                "somekey" : "Parent Item"
                "categoryLookup": [
                    {
                        "category_name": "My Cat",
                    },
                    {
                        "category_name": "Something Else",
                    }
                ]
            }
     ]

最终结果将类似于:

    [
       {
           New Item: [
              {...contains 4-19de-454673d9-9ef5-4545 }
           ],
           My Cat: [
              {...contains be7ea707-19de-43d9-9ef1-d4a3ff79f77a}
           ],
           Something Else: [
              {... contain be7ea707-19de-43d9-9ef1-d4a3ff79f77a} 
           ]
        }
    ]

推荐答案

可以迭代原始数组并创建最终数组:

var data = [{
    "tool_id": "4-19de-454673d9-9ef5-4545",
    "somekey": "Parent Item 2",
    "categoryLookup": [{
      "category_name": "New Item",
    }]
  },
  {
    "tool_id": "be7ea707-19de-43d9-9ef1-d4a3ff79f77a",
    "somekey": "Parent Item",
    "categoryLookup": [{
        "category_name": "My Cat",
      },
      {
        "category_name": "Something Else",
      }
    ]
  }
];

function groupByCategory(data) {
  const res = {};

  data.forEach(item => {
    item.categoryLookup.forEach(category => {
      const name = category.category_name;
      res[name] ??= [];
      res[name].push({
        item: item.tool_id //or all the properties you want
      });
    });
  });
  return res;
}

console.log( groupByCategory(data) );

Javascript相关问答推荐

我可以在useState中调用函数并使用其数据吗

自定义帖子类型帖子未显示在网站上

使用CDO时如何将Vue组件存储在html之外?

如何使用Paged.js仅渲染特定页面

添加/删除时React图像上传重新渲染上传的图像

React对话框模式在用户单击预期按钮之前出现

foreach循环中的Typescript字符串索引

React Native平面列表自动滚动

仅圆角的甜甜圈图表

使用useup时,React-Redux无法找到Redux上下文值

如何在输入元素中附加一个属性为checkbox?

在open shadow—root中匹配时,使用jQuery删除一个封闭的div类

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

单个HTML中的多个HTML文件

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

当我在Reaction中创建一个输入列表时,我的输入行为异常

TypeError:无法读取未定义的属性(正在读取';宽度';)

是否可以将Select()和Sample()与Mongoose结合使用?

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

react -原生向量-图标笔划宽度