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

在Jolt中能否遍历嵌套数组并利用外层索引生成一维数组输出?

如何将嵌套的users数组转换为扁平的staffs数组?

需求:遍历输入中的users数组,保持原有顺序生成一个无嵌套结构的staffs数组。其中:

  • 类型为"A"的用户,直接提取firstName和lastName转换为staffFirstName和staffLastName
  • 类型为"B"的用户,需要展开其subUsers数组,将每个子用户的subUserFirstName和subUserLastName转换为对应字段

输入示例

{
  "users": [
    {
      "type": "A",
      "firstName": "Abc",
      "lastName": "Def"
    },
    {
      "type": "B",
      "subUsers": [
        {
          "subUserFirstName": "Mno",
          "subUserLastName": "Pqr"
        },
        {
          "subUserFirstName": "Stu",
          "subUserLastName": "Vwi"
        }
      ]
    },
    {
      "type": "A",
      "firstName": "Ghi",
      "lastName": "Jkl"
    }
  ]
}

预期输出

{
  "staffs": [
    {
      "staffFirstName": "Abc",
      "staffLastName": "Def"
    },
    {
      "staffFirstName": "Mno",
      "staffLastName": "Pqr"
    },
    {
      "staffFirstName": "Stu",
      "staffLastName": "Vwi"
    },
    {
      "staffFirstName": "Ghi",
      "staffLastName": "Jkl"
    }
  ]
}

解决方案(JavaScript)

const input = {
  "users": [
    { "type": "A", "firstName": "Abc", "lastName": "Def" },
    {
      "type": "B",
      "subUsers": [
        { "subUserFirstName": "Mno", "subUserLastName": "Pqr" },
        { "subUserFirstName": "Stu", "subUserLastName": "Vwi" }
      ]
    },
    { "type": "A", "firstName": "Ghi", "lastName": "Jkl" }
  ]
};

const result = {
  staffs: input.users.flatMap(user => {
    // 处理类型A的用户
    if (user.type === 'A') {
      return [{
        staffFirstName: user.firstName,
        staffLastName: user.lastName
      }];
    }
    // 处理类型B的用户,展开subUsers
    else if (user.type === 'B') {
      return user.subUsers.map(subUser => ({
        staffFirstName: subUser.subUserFirstName,
        staffLastName: subUser.subUserLastName
      }));
    }
    // 未知类型返回空数组,不影响最终结果
    return [];
  })
};

// 输出格式化后的结果
console.log(JSON.stringify(result, null, 2));

代码说明

  • 使用flatMap替代普通map,可以在遍历的同时自动展开嵌套数组,一步得到扁平结构的staffs数组
  • 对类型A的用户,返回包含单个转换后对象的数组,flatMap会直接保留这个对象
  • 对类型B的用户,用map转换subUsers中的每个元素,返回转换后的数组,flatMap会将这个数组展开到最终结果中
  • 增加了未知类型的处理逻辑,避免出现意外数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:50:17