如何实现多维数组的排列组合
2021-05-12 本文已影响0人
辉夜真是太可爱啦
大家都应该逛过淘宝,比方说你要在上面买一台手机,有内存大小 ['16G' , '32G' , '64G' , '128G']
,然后颜色 ['黑色' , '白色' , '银色' , '金色']
,版本有 ['联通' , '移动' , '电信']
,现在,让你算出各种组合情况,可以使用如下这个方法
function doExchange(arr){
var len = arr.length;
// 当数组大于等于2个的时候
if(len >= 2){
// 第一个数组的长度
var len1 = arr[0].length;
// 第二个数组的长度
var len2 = arr[1].length;
// 2个数组产生的组合数
var lenBoth = len1 * len2;
// 申明一个新数组,做数据暂存
var items = new Array(lenBoth);
// 申明新数组的索引
var index = 0;
// 2层嵌套循环,将组合放到新数组中
for(var i=0; i<len1; i++){
for(var j=0; j<len2; j++){
items[index] = arr[0][i] +" | "+ arr[1][j];
index++;
}
}
// 将新组合的数组并到原数组中
var newArr = new Array(len -1);
for(var i=2;i<arr.length;i++){
newArr[i-1] = arr[i];
}
newArr[0] = items;
// 执行回调
return doExchange(newArr);
}else{
return arr[0];
}
}
现在让我们来测试下效果
doExchange([['16G' , '32G' , '64G' , '128G'],['黑色' , '白色' , '银色' , '金色'],['联通' , '移动' , '电信']]);
可以看到效果如下
image.png