Maison >interface Web >js tutoriel >Comment générer toutes les combinaisons possibles de valeurs de tableau en JavaScript ?

Comment générer toutes les combinaisons possibles de valeurs de tableau en JavaScript ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 02:45:29263parcourir

How to Generate All Possible Combinations of Array Values in JavaScript?

Produit cartésien : génération de combinaisons de valeurs de tableau en JavaScript

Description du problème :

Donné un nombre arbitraire de tableaux JavaScript, comment calculer le produit cartésien de leurs éléments, générant efficacement toutes les combinaisons possibles de leurs valeurs ?

Solution :

Bien que ce problème puisse ressembler à une permutation, il s'agit d'une tâche classique impliquant le produit cartésien. En utilisant la récursivité, nous pouvons implémenter un algorithme pour y parvenir :

  1. Définir une liste d'entrée de tableaux :

    <code class="js">var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];</code>
  2. Créer un allPossibleCases récursif fonction :

    <code class="js">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 < arr[0].length; i++) {
          for (var j = 0; j < allCasesOfRest.length; j++) {
            result.push(arr[0][i] + allCasesOfRest[j]);
          }
        }
        return result;
      }
    }</code>
  3. Instancier le allPossibleCases fonctionne avec la liste d'entrée des tableaux et imprime les résultats :

    console.log(allPossibleCases(allArrays));

Sortie :

Ce code affichera toutes les combinaisons possibles de les valeurs dans les tableaux d'entrée, au format suivant :

["acd", "bcd", "azd", "bzd", "ace", "bce", "aze", "bze", "acf", "bcf", "azf", "bzf"]

Cet algorithme génère efficacement le produit cartésien de les tableaux fournis, apportant une solution au problème de la création de combinaisons exhaustives de leurs éléments.

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