Comment puis-je produire toutes les combinaisons de valeurs dans N nombre de tableaux JavaScript de longueurs variables?Recherche de toutes les combinaisons de valeurs de tableau JavaScript
Disons que j'ai N nombre de tableaux JavaScript, par ex.
var first = ['a', 'b', 'c', 'd'];
var second = ['e'];
var third = ['f', 'g', 'h', 'i', 'j'];
(Trois tableaux dans cet exemple, mais son nombre N de tableaux pour le problème.)
Et je veux sortie toutes les combinaisons de leurs valeurs, pour produire
aef
aeg
aeh
aei
aej
bef
beg
....
dej
EDIT: Voici la version que j'ai commencé à travailler, en utilisant la réponse acceptée de Ffriend comme 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"]
Non. Je construis un outil de simulation multivariée pour Optimizely, et je me suis rendu compte qu'il s'agit d'un problème non trivial, et que je n'ai pas trouvé d'exemple JavaScript pour cela. Mais merci de me faire sentir comme un idiot :) – Yahel
Je pense que c'est un peu mal défini. Vous avez montré des valeurs de sortie basées sur 'first | second | third', où une valeur est tirée de chacun. Est-ce que 'eaf' est une valeur inacceptable? Ou voulez-vous vraiment dire que vous voulez juste des chaînes de longueur N, où chaque personnage provient d'un tableau différent? –
En ce qui concerne cela, 'eaf == aef'. L'ordre n'a pas d'importance. Donc, oui, je veux produire un tableau de chaînes, où chaque valeur est une chaîne de longueur N, et où chaque caractère provient d'un tableau différent. – Yahel