JavaScript中如何按SKU/Ref匹配扣减对象数组的库存与订单数量
JavaScript实现库存扣减功能
针对你的需求,这里提供一个简单易懂的实现方案,核心思路是遍历库存数组,匹配对应订单后计算剩余库存:
实现代码
const cybertill = [ { Ref: 'BLD188', Stock: '4' }, { Ref: 'BEX1403', Stock: '7' } ]; const openOrders = [ { SKU: 'BLD188', Quantity: '1' }, { SKU: 'BEX1403', Quantity: '2' } ]; // 生成剩余库存数组 const stockLeft = cybertill.map(item => { // 找到对应SKU的订单 const matchedOrder = openOrders.find(order => order.SKU === item.Ref); // 计算剩余库存:先转数字计算,再转回字符串 const remainingStock = matchedOrder ? String(Number(item.Stock) - Number(matchedOrder.Quantity)) : item.Stock; // 返回新对象,不修改原数组 return { ...item, Stock: remainingStock }; }); console.log(stockLeft);
关键说明
- 使用
map遍历cybertill数组,不会修改原数组,而是生成新的结果数组 - 用
find方法快速匹配到对应SKU的订单 - 因为
Stock和Quantity都是字符串类型,所以需要用Number()转成数字计算,最后用String()转回字符串保持格式一致 - 如果某个库存项没有匹配的订单,直接保留原库存值
运行代码后,就能得到你期望的stockLeft数组。
内容的提问来源于stack exchange,提问作者Geerocktricks
相关产品推荐
相关产品推荐

