電商多規格選擇演算法

2021-10-14 11:10:50 字數 1817 閱讀 5628

一維規格實現

三維規格選擇實現

​ skualgorithm一般指代電商專案中商品規格屬性選擇時根據使用者選擇的不同規格屬性,我們需要計算出其他規格是否可選動態的展示給使用者,由此衍生出的sku演算法。

​ 舉個例子,比如商品a現有四維規格屬性

顏色:規格id

尺寸:規格id

重量:規格id

**:規格id

紅色:1001

s:2001

5斤:3001

**一:4001

藍色:1002

m:2002

10斤:3002

**二:4002

**三:4003

​ 其中a商品以下三種規格組合才有庫存

​ 那麼當使用者選擇紅色時

​ 沒接觸過此類業務場景的開發憑著第一感覺可能會覺得實現起來並不複雜,但如果深入實現起來就會發現隨著規格屬性維數的增加,複雜度成倍上公升。github和相關的文章都講得晦澀難懂,現成的庫又只能成套使用,沒有將sku選擇的實現抽離出來,使用上很尷尬。故分享sku選擇的實現思路並提供kotlin版實現**,支援1-n維規格的選擇,使用kotlin語言的開發者可直接使用,**只處理sku選擇的實現,不涉及任何ui選擇和業務邏輯,可以自定義各種個性化需求。

​ 對應上表四維規格商品,各類業務後端返回資料結構都大同小異,現舉例如下,若出入太大可罵到後端返回成此結構或者自行轉換成此結構

],

"specgroup":[

...]},

...]

}...

]}

庫中提供了兩種實現方法

在此只描述最簡單易懂的迴圈法,按此思路可實現各類語言版本。

核心思路

以上表4維規格舉例,當前選中了藍色,10斤

1.構造規格groupid陣列a [101,102,103,104]

2.構造乙個長度為4的空陣列b

3.將已選中的規格,按規格組順序填充空陣列b,例如10斤所在的規格組是103,在陣列a中是第2位,那麼10斤這個規格id就該放在陣列b的第2位,填充完畢的陣列b [1002,null,3002,null]

4.遍歷所有規格

4.1 將b陣列內容複製出來構造乙個temp陣列 [1002,null,3002,null] 再按規格組順序填充temp陣列

4.2 填充temp陣列的意思:例如遍歷到第乙個規格紅色,紅色所在規格組是101,在陣列a中是第0位,那麼temp[0]=紅色規格id,得到temp陣列為[1001,null,3002,null]

4.3 得到填充後的temp陣列後,遍歷skulist,將speccombinationid拆分成陣列c,按位匹配,若temp陣列中的非null位都能與陣列c每一位對應上且此sku有庫存,那麼規格紅色可以被選擇,若skulist遍歷完都不能滿足條件,則規格紅色不可以被選擇。

4.4 重複4.1-4.3直到所有規格遍歷完畢,即完成一次sku選擇演算法

無向圖法思路可見: 無向圖法

那麼怎麼選擇呢?若不同組下的規格id可能會出現相同的情況那麼選擇迴圈法,若sku的speccombinationid不按規格組順序排列的話那麼選擇無向圖法,若上述兩種情況都出現那麼你最好是把鍵盤給後端,叫後端來開發。若上述兩種情況都不出現,那肯定無向圖法優於迴圈法。

具體使用方式詳見sku演算法實現

電商 商品發布規格組合演算法

1 迴圈組合2 function generategroup arr 17 當第乙個成員組合完畢,刪除這第乙個成員 18result.shift 19 20 21 列印結果 22console.log result 23 2425 generategroup 紅色 藍色 x xl 10m 20m 商...

如何選擇電商erp系統?電商大佬給你10條建議。

許多店主不知道如何為他們的店鋪選擇合適的電商erp,所以他們經常根據 選擇,哪家便宜或者回扣大就使用那家的產品。在上線後發現不僅很多問題無法解決,而且效率反而下降,工作量比以前更大,這顯然是得不償失的。所以今天我想分享我的店鋪是如何選擇電商erp系統的。我是在2014年3月開的美妝類 店,現在已經5...

電商專案 基於json格式完成商品規格引數管理

學習主題 基於json格式完成商品規格引數管理 一對一json itemparamservice 介面新增方法 itemparamserviceimpl 重寫方法 manageritemparamservice介面新增方法 mnageritemparamserviceimpl 實現方法 建立 ite...