js求N个数组所有组合

在开发商品发布的时候遇到一个需要求n个数组所有组合的问题,具体为商品的属性为一个数组,属性的会有不同,每个属性的属性值也不同,可能是0~N个。

举个例子:假设进了一批手机,手机的属性如下所示:

           运行内存:2G、3G、4G、6G

           内存:32G、64G、128G、256G

            颜色:黑色、红色、白色

 如果用户勾选了运行内存  2G 4G  ,内存32G 、64G、256G,颜色:黑色,红色。

那么这个商品理论上会有2*3*2=12种情况。然后分别对这12种录入价格,库存等。

现在核心编码问题就是求[2G,4G]   [32G,64G,256G]  [黑色,红色]的全排列。这个就像乘法分配律的展开式,先求前两项的展开,形成新因子于后面项展开。转化为代码可以是

const textArr=[['a','b','c'],['d','e','f','g'],['h','i']]	
	const getCombination=(array)=>{
		let resultArry=[];
			array.forEach((arrItem)=>{
				if(resultArry.length===0){
					resultArry=arrItem
				}else{
					const emptyArray=[];
					resultArry.forEach((item)=>{
						arrItem.forEach((value)=>{
							emptyArray.push([...item,value])
						})	
					})
					resultArry=emptyArray
		       }
		   });
		       return resultArry;
			}
  	console.log(getCombination(textArr))

实际运用效果,勾选商品属性后,会自动生成所有组合的商品

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值