在javascript中迭代数组和concat

sun*_*sun 8 javascript arrays typescript

说我有一个数组[["a", "b"], ["c", "d"]],我如何迭代或减少或映射或加入这个数组并得到["ac", "ad", "bc", "bd"],如果数组像[["a", "b"], ["c", "d"], ["e", "f"]]我应该得到的一样["ace", "acf", "ade", "adf", "bce", "bcf", "bde", "bdf"]

我们如何使用数组迭代或方法来实现这一点?

我尝试使用reduce:

const output = [];
const sol = array.reduce((cum, ind) => {
  for (let i = 0; i <= cum.length; i++ ) {
    for (let j = 0; j <= ind.length; j++) {
      output.push(`${cum[i]} + ${ind[j]}`);
    }
  }
});
console.log(output);
Run Code Online (Sandbox Code Playgroud)

但我没有得到确切的输出。

Cer*_*nce 3

我将使用递归方法:迭代第一个数组,然后进行递归调用以检索第二个及后续数组的字符串。递归地执行此操作,直到到达数组的末尾。然后,在返回时,您可以将递归结果与当前数组的每个元素连接起来:

const recurse = (arr) => {
  const subarr = arr.shift();
  if (!subarr) return;
  const result = [];
  for (const laterStr of recurse(arr) || ['']) {
    for (const char of subarr) {
      result.push(char + laterStr);
    }
  }
  return result;
}

const arr = [["a", "b"], ["c", "d"], ["e", "f"]];
console.log(recurse(arr));
Run Code Online (Sandbox Code Playgroud)