Maison > interface Web > js tutoriel > le corps du texte

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

DDD
Libérer: 2024-11-03 16:19:02
original
737 Les gens l'ont consulté

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];
Copier après la connexion

} 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;
Copier après la connexion

}
}



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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal