Поиск всех комбинаций (декартово произведение) массива JavaScript values ​​

Как я могу создать все комбинации значений в N - количестве массивов JavaScript переменной длины?

Допустим, у меня есть N массивов JavaScript, например

var first = ['a', 'b', 'c', 'd'];
var second = ['e'];
var third =  ['f', 'g', 'h', 'i', 'j'];

(Три массива в этом примере , но это количество N массивов для проблемы.)

И я хочу вывести все комбинации их значений, чтобы получить

aef
aeg
aeh
aei
aej
bef
beg
....
dej

РЕДАКТИРОВАТЬ: Вот версия, которую я получил, используя принятый ответ ffriend в качестве основы.

var allArrays = [['a', 'b'], ['c', 'z'], ['d', 'e', 'f']];

 function allPossibleCases(arr) {
  if (arr.length === 0) {
    return [];
  } 
else if (arr.length ===1){
return arr[0];
}
else {
    var result = [];
    var allCasesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of array
    for (var c in allCasesOfRest) {
      for (var i = 0; i < arr[0].length; i++) {
        result.push(arr[0][i] + allCasesOfRest[c]);
      }
    }
    return result;
  }

}
var r=allPossibleCases(allArrays);
 //outputs ["acd", "bcd", "azd", "bzd", "ace", "bce", "aze", "bze", "acf", "bcf", "azf", "bzf"]
55
задан georg 24 October 2019 в 09:02
поделиться