如何过滤对象数组并按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 } ]
代码说明
- 先判断数组是否为空,避免后续操作报错
- 取数组第一个元素的
Id作为基准,使用every方法校验所有元素的Id是否与基准一致 - 通过
map遍历数组,根据校验结果生成新数组:- 若所有
Id相同,第一个元素保留原QTY,其余设为0 - 若
Id不全相同,所有元素保留原QTY值
- 若所有
- 最终返回的每个对象仅包含
QTY字段
内容的提问来源于stack exchange,提问作者james11
相关产品推荐
相关产品推荐

