笛卡爾乘積指數(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
更多方法歡迎交流~