我们在管理后台添加商品属性,该如何生成商品的sku?
看图
图1中,我们在后台配置商品属性,图二就是配置完后展示的商品组合信息。
生成的sku过程很简单,我们可以使用笛卡尔乘积来实现,比如:黑色有1PCS, 2PCS, 相对应的白色和红色也有1PCS 和 2PCS。
上代码
//来个sku数组
let skus = [
[
"黑色",
"红色",
"白色"
],
[
"1PCS",
"2PCS"
]
]
//笛卡尔乘积,计算规格
let cartesian = (arr) => {
if (arr.length < 2) return arr[0] || [];
return [].reduce.call(arr, function(col, set) {
let res = [];
col.forEach(c => {
set.forEach(s => {
let t = [].concat(Array.isArray(c) ? c : [c]);
t.push(s);
res.push(t);
})
});
return res;
});
}
const skuList = cartesian(skus);
console.log(skuList)
最后生成的结果
这个笛卡尔乘积也不是很难,就是借助了js的高阶函数reduce,将循环的值累加到数组中。