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

如何过滤对象数组并按Id一致性规则处理QTY生成目标Payload?

对象数组QTY值处理逻辑实现

需求规则

  • 检查数组内所有对象的Id是否完全一致
  • 若所有Id相同:第一个元素保留原QTY值,其余元素的QTY设为0
  • 若Id不全相同:所有元素均保留原QTY值
  • 输出结果仅保留每个对象的QTY字段

实现代码(JavaScript)

function processQtyArray(arr) {
  if (!arr.length) return [];
  const firstId = arr[0].Id;
  const allSameId = arr.every(item => item.Id === firstId);

  return arr.map((item, index) => ({
    QTY: allSameId ? (index === 0 ? item.QTY : 0) : item.QTY
  }));
}

测试示例

示例1:所有元素Id一致

输入:

[
  {
    "QTY": 50,
    "Id": "1111"
  },
  {
    "QTY": 50,
    "Id": "1111"
  },
  {
    "QTY": 50,
    "Id": "1111"
  }
]

执行函数后输出:

[
  {
    "QTY": 50
  },
  {
    "QTY": 0
  },
  {
    "QTY": 0
  }
]

示例2:元素Id不一致

输入:

[
  {
    "QTY": 50,
    "Id": "1111"
  },
  {
    "QTY": 50,
    "Id": "1133"
  },
  {
    "QTY": 50,
    "Id": "1122"
  }
]

执行函数后输出:

[
  {
    "QTY": 50
  },
  {
    "QTY": 50
  },
  {
    "QTY": 50
  }
]

代码说明

  1. 先判断数组是否为空,避免后续操作报错
  2. 取数组第一个元素的Id作为基准,使用every方法校验所有元素的Id是否与基准一致
  3. 通过map遍历数组,根据校验结果生成新数组:
    • 若所有Id相同,第一个元素保留原QTY,其余设为0
    • 若Id不全相同,所有元素保留原QTY值
  4. 最终返回的每个对象仅包含QTY字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:10:03