给出二维数组[[1, 2], [‘a’, ‘b’], [‘A’, ‘B’]],排列组合拼接出[“1aA”, “1aB”, “1bA”, “1bB”, “2aA”, “2aB”, “2bA”, “2bB”]
// 使用递归的方法,注意跳出递归的条件
function fn (arr) {
let res = [];
function _fn (str = '', num = 0) {
// 二维数组拼接,每个拼接好的字符串长度等于最外层数组的长度
if(arr.length === num) {
return res.push(str);
}
// 从数组第0个开始拼接
arr[num].forEach(item => {
_fn(str + item, num + 1);
})
};
_fn();
return res;
}
// 使用reduce
function fnReduce (arr) {
return arr.reduce((prev, next) => {
return prev.map(n => {
return next.map(m => {
return `${n}${m}`;
})
}).flat(); // 重点是数组扁平化,妙啊
});
}