js實現(xiàn)商品SKU算法(笛卡爾乘積)

笛卡爾乘積指數(shù)學中,X和Y兩個集合的笛卡爾積。表示為X × Y,第一個對象是X的成員,第二個對象是Y的所有可能有序?qū)Φ钠渲幸粋€成員 。

假設X=[A,B,C],Y=[1,2,3]那么X與Y的笛卡爾積為[A1,A2,A3,B1,B2,B3,C1,C2,C3]。

使用Javascript實現(xiàn)Sku算法的方式為:

//假設一個商品有兩種規(guī)格,[3個顏色],[3個尺碼]。3*3=9個SKU
let spec = [
  ["紅","綠","藍"],
  ["大","中","小"]
]

let sku = spec.reduce((x,y) =>{
    let arr = [];
    x.forEach(x => y.forEach(y => arr.push(x.concat([y]))))
    return arr;
},[[]])

console.log(sku)
//輸出
/**
[
  ["紅","大"],
  ["紅","中"],
  ["紅","小"],

  ["綠","大"],
  ["綠","中"],
  ["綠","小"],

  ["藍","大"],
  ["藍","中"],
  ["藍","小"]]
*/

例:2 * 3 * 4 * 5 = 120個SKU

let spec = [
  [
    {attr:"顏色",value:"紅色"},
    {attr:"顏色",value:"綠色"}
  ],
  [
    {attr:"尺碼",value:"S"},
    {attr:"尺碼",value:"M"},
    {attr:"尺碼",value:"L"}
  ],[
    {attr:"重量",value:"100"},
    {attr:"重量",value:"200"},
    {attr:"重量",value:"300"},
    {attr:"重量",value:"400"}
  ],
  [
    {attr:"年份",value:"2022"},
    {attr:"年份",value:"2021"},
    {attr:"年份",value:"2020"},
    {attr:"年份",value:"2019"},
    {attr:"年份",value:"2018"}
  ],
]
//120個SKU

更多方法歡迎交流~

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 題目:JavaScript 實現(xiàn)笛卡爾乘積,一般用于商品 sku 屬性配置,例如輸入 ['1', '2'], ['...
    宮若石閱讀 1,932評論 0 2
  • 第一、定義 笛卡爾乘積是指在數(shù)學中,兩個集合X和Y的笛卡爾積(Cartesian product),又稱直積,表示...
    安之煙波客閱讀 2,058評論 0 0
  • 昨天去面試碰到的算法題,笛卡爾積,之前都沒接觸過。 笛卡爾乘積是指在數(shù)學中,兩個[集合] X和Y的笛卡尓積(Car...
    Theodore的技術站閱讀 3,500評論 0 50
  • 首先知道啥是笛卡爾積,百度百科中解釋是這樣的: 笛卡爾乘積是指在數(shù)學中,兩個集合X和Y的笛卡爾積(Cartesia...
    小寶瓜閱讀 10,824評論 1 4
  • 笛卡爾乘積:笛卡爾乘積是指在數(shù)學中,兩個集合X和Y的笛卡尓積(Cartesian product),又稱直積表示為...
    siro剎那閱讀 7,615評論 0 0

友情鏈接更多精彩內(nèi)容