处理多规格函数,自看。省的重写

原始数据
$arr = [
['黑', '白', '红', '绿'],
['大', '小'],
['A', 'B', 'C', 'D']
];
递归函数
doExchange(val) {
var len = val.length
// 当数组大于等于2个的时候
if (len >= 2) {
// 第一个数组的长度
var len1 = val[0].length
// 第二个数组的长度
var len2 = val[1].length
// 2个数组产生的组合数
var lenBoth = len1 * len2
// 申明一个新数组
var items = new Array(lenBoth)
// 申明新数组的索引
var index = 0
for (var i = 0; i < len1; i++) {
for (var j = 0; j < len2; j++) {
if (val[0][i] instanceof Array) {
items[index] = val[0][i].concat(val[1][j])
} else {
items[index] = [val[0][i]].concat(val[1][j])
}
index++
}
}
var newArr = new Array(len - 1)
for (var i = 2; i < val.length; i++) {
newArr[i - 1] = val[i]
}
newArr[0] = items
return this.doExchange(newArr)
} else {
val[0].forEach((item, index) => {
if (typeof item == 'string') {
val[0][index] = [item]
}
})
return val[0]
}
}

你可能感兴趣的:(处理多规格函数,自看。省的重写)