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

如何用MuleSoft DataWeave按匹配字段合并列表并分配递增iterid

基于did合并列表并生成递增iterid的解决方案

核心思路

先把attributes列表按did做分组映射,方便快速定位每个id项对应的匹配属性;再用一个全局计数器,每生成一个匹配对就递增加一,确保iterid连续唯一。

代码实现(以JavaScript为例)

// 示例输入
const ids = [{"id":"d3c0da07-e58f4606bm","did":"714c9836927d"}];
const attributes = [{"snm":"3298SJDJ","did":"714c9836927d"}];

// 1. 将attributes按did分组,减少重复查找开销
const attrMap = attributes.reduce((acc, attr) => {
  acc[attr.did] = acc[attr.did] || [];
  acc[attr.did].push(attr);
  return acc;
}, {});

// 2. 生成带递增iterid的合并结果
let iterid = 0;
const mergedResult = [];

ids.forEach(idItem => {
  // 获取当前id项对应的所有匹配属性
  const matchedAttrs = attrMap[idItem.did] || [];
  matchedAttrs.forEach(() => {
    iterid++;
    // 若需要合并attribute的属性,可改为 {...idItem, ...attr, iterid}
    mergedResult.push({
      iterid,
      ...idItem
    });
  });
});

console.log(mergedResult);
// 输出:[{"iterid":1,"id":"d3c0da07-e58f4606bm","did":"714c9836927d"},{"iterid":2,"id":"d3c0da07-e58f4606bm","did":"714c9836927d"}]

关于flatMap的问题

flatMap的核心作用是数组扁平化转换,虽然也能实现需求,但需要额外在外部维护计数器,逻辑会绕一些,不如直接遍历的方式直观易懂,也更便于后续调整迭代规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:26:06