You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数组提取category作为键,构建含指定字段的新数组?

需求说明

从给定的data对象中提取category字段作为新输出对象的键;从listData数组的list列表中提取id、category字段,并将原title字段重命名为name,组成对应键下的数组。

输入示例

输入data对象

const data = {
    "32": {
        "id": 32,
        "category": "Grocery Items",
    }, 
     "33": {
        "id": 33,
        "category": "Household Items",
    }, 
}

输入listData数组

const listData = [
{
    "data": {
        "list": [
            {
                "id": 1,
                "category_id": 32,
                "title": "Eggs",
                "category": "Grocery Items"
            },
            {
                "id": 2,
                "category_id": 32,
                "title": "Bacon",
                "category": "Grocery Items"
            }
         ]
     }
}
]

期望输出

const output = {
    "Grocery Items": [
      {
            "id": 1,
            "category": "Grocery Items",
            "name": "Eggs",
      },
      {
            "id": 2,
            "category": "Grocery Items",
            "name": "Bacon",
      },
      ]
}

解决方案代码

// 初始化输出对象
const output = {};

// 遍历listData中的所有列表项
listData.forEach(group => {
  group.data.list.forEach(item => {
    // 提取字段并完成重命名
    const formattedItem = {
      id: item.id,
      category: item.category,
      name: item.title
    };
    // 若当前分类不存在数组则初始化
    if (!output[item.category]) {
      output[item.category] = [];
    }
    // 将格式化后的项推入对应分类数组
    output[item.category].push(formattedItem);
  });
});

console.log(output);

代码逻辑说明

  1. 先创建空对象output用于存储最终结果
  2. 逐层遍历listData,取出目标列表data.list
  3. 对列表中的每一项,提取id、category字段,同时将title重命名为name,生成新的对象
  4. 检查output中是否存在当前分类对应的数组,不存在则创建空数组
  5. 将新生成的对象添加到对应分类的数组中

内容的提问来源于stack exchange,提问作者Derek Hough

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:15:44