我们在管理后台添加商品属性,该如何生成商品的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,将循环的值累加到数组中。
文章讲述了在管理后台配置商品属性后,如何利用JavaScript的笛卡尔乘积方法生成商品的SKU,通过示例代码展示了如何通过reduce函数实现这一过程。
614

被折叠的 条评论
为什么被折叠?



