js 实现商品属性组合(sku)

我们在管理后台添加商品属性,该如何生成商品的sku?

看图
图1
图2
图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,将循环的值累加到数组中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值