電商多商品組合優惠算法:如何高效計算最大優惠?
本文針對電商平臺多商品組合優惠計算問題,提供一種基于回溯算法的JavaScript解決方案,旨在高效計算最大優惠,確保每個商品僅參與一次優惠活動。
問題描述:電商場景下,單個商品可能有多種優惠(多件折扣或滿減),多個商品之間也存在組合滿減優惠。核心挑戰在于如何從眾多優惠組合中找到最大優惠方案。
下文提供代碼片段展示商品信息(tb_goods)、優惠信息(tb_spce)以及測試購買商品信息(testbuy)的數據庫結構。 原始代碼已實現單個商品的多件折扣計算,但缺少多商品組合滿減優惠的計算邏輯。 我們使用回溯法解決此問題。
let tb_goods = [ { id: 1, goodsName: "A", price: 10, spceList: [101, 102, 105], }, // ... 其他商品信息 ]; let tb_spce = [ { id: 101, type: "滿減", msg: "滿20減2", full: 20, reduction: 2, }, // ... 其他優惠信息 ]; const compute = (goods = []) => { // ... (此處為完整的計算函數代碼,見問題答案) }; // 測試用例 const demo3 = [ { goodsId: 1, num: 3 }, { goodsId: 2, num: 6 }, { goodsId: 3, num: 3 }, { goodsId: 4, num: 6 }, ]; const res3 = compute(demo3); console.log(json.stringify(res3)); // {“total”:93.1,“discount”:11,“compose”:[[[1,6,28.5,102],[2,6,25.2,102]],[[4,5,33.6,104]]]} // ... 其他測試用例
compute 函數是核心邏輯,它先計算單個商品折扣,再利用回溯法 (composebacktrace, discomposebacktrace) 遍歷所有可能的滿減組合,最終返回包含總價、總折扣以及優惠組合策略的 JSON 對象。 多個測試用例展示了算法在不同商品組合下的計算結果。 結果清晰地展現了最終價格、總折扣以及每個商品參與的具體滿減組合,方便商家和用戶理解訂單價格構成。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END