function list(arr){
function newArr(arr){
var num=1;
arr.forEach((x)=>{
num*=x.length
})
var tem=[]
for(var i=0;i<num;i++){
tem[i]=[];
}
return tem
}
function numFn(num){
var pp=[];
var nums=list.length;
arr.forEach(function(x){
nums=nums/x.length
pp.push(x[nums==1?num%x.length:parseInt(num/nums)%x.length]);
})
return pp
}
var list=newArr(arr);
for(var j=0;j<list.length;j++){
list[j]=numFn(j)
}
return list
}
4*2*2, 16种.
排列组合,由于每个数组中必须要有一个元素,那么对于
数组1:c(4,1)=4,
数组2:c(2,1)=2,
数组3:c(2,1)=2,
数组4:c(1,1)=1,
再每个相乘,注意重复元素.
一般来说有几组就需要几个循环,把里面的元素挨个组合一次就行了,这是js的常规解法,有没有更好的就不清楚了。