给出二维数组[[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;}// 使用reducefunction fnReduce (arr) {return arr.reduce((prev, next) => {return prev.map(n => {return next.map(m => {return `${n}${m}`;})}).flat(); // 重点是数组扁平化,妙啊});}
