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

如何在MuleSoft中实现多数组元素的关联映射生成结果数组?

多数组笛卡尔积组合实现方案

核心思路

针对每个甜点对象,将其batters、topping、base三个数组生成笛卡尔积(即每个数组的元素与其他数组的所有元素两两组合)。若某数组为空,则用包含空值的默认对象替代,确保组合结果保留对应空字段。

代码实现

const input = {"data": {"contents": {"desserts": [{"id": "0001","type": "donut","name": "Cake","ppu": 0.55,"batters": [{"id": "1001","type": "Regular"},{"id": "1002","type": "Chocolate"}],"topping": [],"base": [{"id": "001","type": "wheat"},{"id": "003","type": "corn"}]},{"id": "0002","type": "donut","name": "Raised","ppu": 0.55,"batters": [{"id": "1004","type": "Devil's Food"}],"topping": [{"id": "5001","type": "None"},{"id": "5002","type": "Glazed"}],"base": [{"id": "005","type": "cashew"}]}]}}};

function transformDesserts(inputData) {
  const desserts = inputData.data.contents.desserts;
  const result = [];

  desserts.forEach(dessert => {
    // 处理空数组:为空时替换成含空值的对象,保证遍历不中断
    const batters = dessert.batters.length ? dessert.batters : [{ id: "", type: "" }];
    const toppings = dessert.topping.length ? dessert.topping : [{ id: "", type: "" }];
    const bases = dessert.base.length ? dessert.base : [{ id: "", type: "" }];

    // 嵌套遍历生成笛卡尔积组合
    batters.forEach(batter => {
      toppings.forEach(topping => {
        bases.forEach(base => {
          result.push({
            id: dessert.id,
            type: dessert.type,
            name: dessert.name,
            ppu: dessert.ppu,
            batterid: batter.id,
            battertype: batter.type,
            toppingid: topping.id,
            toppingtype: topping.type,
            baseid: base.id,
            basetype: base.type
          });
        });
      });
    });
  });

  return result;
}

// 生成并查看结果
const output = transformDesserts(input);
console.log(JSON.stringify(output, null, 2));

关键说明

  1. 空数组处理:通过判断数组长度,为空时替换为[{id: "", type: ""}],确保后续遍历能生成含空字段的条目,不会因为数组为空跳过组合。
  2. 笛卡尔积生成:用三层嵌套forEach遍历三个数组,每个元素组合都生成一个新对象,合并原甜点的基础属性与当前组合的属性,逻辑直观且易维护。
  3. 结果匹配:执行后生成的结果与预期输出完全一致,包含所有需要的组合情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:06:05