Maison >interface Web >js tutoriel >Comment générer toutes les combinaisons (produit cartésien) de valeurs à partir de tableaux JavaScript ?

Comment générer toutes les combinaisons (produit cartésien) de valeurs à partir de tableaux JavaScript ?

DDD
DDDoriginal
2024-11-03 16:19:02763parcourir

How to Generate All Combinations (Cartesian Product) of Values from JavaScript Arrays?

Recherche de toutes les combinaisons (produit cartésien) de valeurs de tableau JavaScript

La production de toutes les combinaisons de valeurs à partir de plusieurs tableaux en JavaScript peut être réalisée grâce au concept de produit cartésien. Voici comment vous pouvez l'aborder :

Récursion pour le produit cartésien


Pour générer toutes les combinaisons, nous pouvons utiliser une fonction récursive qui parcourt chaque tableau et combine les éléments de tous les tableaux.

Voici un exemple de fonction récursive qui trouve le produit cartésien de plusieurs tableaux :



< ;pre class="snippet-code-js lang-js Prettyprint-override">function allPossibleCases(arr) {
if (arr.length == 1) {

return arr[0];

} else {

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

}
}



Exemple d'utilisation


Disons que vous avez trois tableaux :

var first = ['a', 'b'], <br>var seconde = ['c'],<br>var troisième = ['d', 'e', ​​'f'];

En utilisant la fonction allPossibleCases, vous pouvez générer toutes les combinaisons comme suit :




var allArrays = [premier, deuxième, troisième];<br>console.log(allPossibleCases(allArrays));



Cela produira les combinaisons suivantes :

acd
ace
acf
bcd
bce
bcf
azd
aze
azf
bzd
bze
bzf

Remarque : L'ordre des éléments dans chaque combinaison peut varier en fonction de l'ordre des tableaux dans la variable allArrays.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn