给出二维数组[[1, 2], [‘a’, ‘b’], [‘A’, ‘B’]],排列组合拼接出[“1aA”, “1aB”, “1bA”, “1bB”, “2aA”, “2aB”, “2bA”, “2bB”]

    1. // 使用递归的方法,注意跳出递归的条件
    2. function fn (arr) {
    3. let res = [];
    4. function _fn (str = '', num = 0) {
    5. // 二维数组拼接,每个拼接好的字符串长度等于最外层数组的长度
    6. if(arr.length === num) {
    7. return res.push(str);
    8. }
    9. // 从数组第0个开始拼接
    10. arr[num].forEach(item => {
    11. _fn(str + item, num + 1);
    12. })
    13. };
    14. _fn();
    15. return res;
    16. }
    17. // 使用reduce
    18. function fnReduce (arr) {
    19. return arr.reduce((prev, next) => {
    20. return prev.map(n => {
    21. return next.map(m => {
    22. return `${n}${m}`;
    23. })
    24. }).flat(); // 重点是数组扁平化,妙啊
    25. });
    26. }

    reduce用法https://www.cnblogs.com/smallpen/p/10249288.html