JavaScript中如何对库存对象做数量扣减后生成新对象
JavaScript 库存扣减计算实现
核心逻辑:遍历全量库存品类,对应品类有预留量的就扣减对应数值,无预留量的保留原库存数值即可。
基础兼容版实现(兼容所有JS运行环境)
var availability = {"bike":10,"cycle":3,"car":1}; var reserved ={"cycle":1,"bike":10}; var response = {}; for (var goodsType in availability) { // 无对应预留量时默认取0,避免出现NaN var reserveNum = reserved[goodsType] || 0; response[goodsType] = availability[goodsType] - reserveNum; } // 输出结果:{"bike":0,"cycle":2,"car":1} console.log(response);
ES6+ 简洁版实现
const availability = {"bike":10,"cycle":3,"car":1}; const reserved ={"cycle":1,"bike":10}; const response = Object.fromEntries( Object.entries(availability).map(([type, stock]) => [type, stock - (reserved[type] ?? 0)]) );
补充:如果业务需要避免库存被扣减为负数,可以将扣减逻辑替换为
Math.max(0, stock - (reserved[type] ?? 0))。
内容的提问来源于stack exchange,提问作者Pavan k
相关产品推荐
相关产品推荐

