¿Cómo puedo producir todas las combinaciones de valores en N número de matrices de JavaScript de longitud variable?Encontrar todas las combinaciones de valores de matriz de JavaScript
Digamos que tengo N cantidad de matrices de JavaScript, p.
var first = ['a', 'b', 'c', 'd'];
var second = ['e'];
var third = ['f', 'g', 'h', 'i', 'j'];
(tres matrices en este ejemplo, pero su número N de matrices para el problema.)
Y quiero salida de todas las combinaciones de sus valores, para producir
aef
aeg
aeh
aei
aej
bef
beg
....
dej
EDITAR: Esta es la versión que obtuve trabajando, usando la respuesta aceptada de ffriend como base.
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"]
Nop. Estoy construyendo una herramienta que simula multivariada para Optimizely, y me di cuenta de que este es un problema no trivial, y no pude encontrar un ejemplo de JavaScript para esto. Pero gracias por hacerme sentir como un idiota :) – Yahel
Creo que esto está un poco mal definido. Ha mostrado valores de salida basados en 'first | second | third', donde se toma un valor de cada uno. ¿Es 'eaf' un valor inaceptable? ¿O realmente quieres decir que solo quieres cadenas de 'N' length, donde cada caracter es de una matriz diferente? –
En lo que respecta a esto, 'eaf == aef'. El orden no importa. Entonces, sí, quiero producir una matriz de cadenas, donde cada valor es una cadena de N longitud, y donde cada carácter es de una matriz diferente. – Yahel