JQuery / Javascript Multiple Array Combinations

J'ai essayé de trouver une solution à cela sans succès. L'idée de ce que j'essaie d'atteindre est de pouvoir trouver toutes les combinaisons uniques de listes multiples. Donc, disons que j'ai 3 listes de cases à cocher (mais c'est un nombre inconnu dans l'application de la vie réelle), Couleur, Taille, Taille du paquet. Les éléments de la liste seront unqiue.

[0] => ['blue', 'green'] [1] => ['small', 'medium', 'large'] [2] => ['Pack Of 6', 'Pack Of 8'] 

Je vais souhaiter obtenir " Blue, Small, Pack Of 6 ", " Blue, Medium, Pack Of 6 ", " Blue, Large, Pack Of 6 ", " Blue, Small, Pack of 8 ", " Blue, Medium, Paquet de 8 "etc. La commande n'est pas importante, mais serait agréable de l'avoir logiquement groupé.

J'ai déjà les listes sorties dans un tableau en utilisant jQuery:

  options = []; jQuery('.option-types').each(function(){ opts = []; jQuery('input:checked', this).each(function(){ opts.push(jQuery(this).next().text()); }); options.push(opts) }); 

S'il existe un chemin fonctionnel récursif pour répondre à ce qui serait idéal, comme je l'ai dit, le nombre de listes pourrait être tout aussi bien que le contenu des listes.

J'espère que vous, les gars et les filles, pouvez vous aider, ça fait ma tête.

Cheers – Dan

Cela devrait fonctionner 🙂

 var recursiveSearch; var possibilities = []; recursiveSearch = function (text, depth ) { text = text || ""; depth = depth || 0; for ( var i = 0; i < options[depth].length; i++ ) { // is there one more layer? if ( depth +1 < options.length ) // yes: iterate the layer recursiveSearch ( text + ((text=="") ? "" : " ") + options[depth][i] , depth +1 ); else // no: this is the last layer. we add the result to the array possibilities.push ( text + options[depth][i] ); } } recursiveSearch ( ); 

Avec votre gamme

 [0] => ['blue', 'green'] [1] => ['small', 'medium', 'large'] [2] => ['Pack Of 6', 'Pack Of 8'] 

Le résultat serait le même:

  1. Petit paquet bleu de 6
  2. Petit paquet bleu de 8
  3. Paquet moyen bleu de 6

Vous pouvez modifier le code source Java de la page http://www.1your.com/drupal/FullCodeFindingAllStringCombinationsUsingRecursion à JavaScript – l'idée devrait être facile à comprendre, même si vous n'avez pas beaucoup d'exposition à Java. Je doute qu'il y ait une solution prête à l'emploi.