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

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

Linda Hamilton
Libérer: 2024-11-03 21:05:29
original
425 Les gens l'ont consulté

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

Produit cartésien des valeurs de tableau JavaScript

Problème :

Étant donné un nombre arbitraire de JavaScript des tableaux de différentes longueurs, déterminent toutes les combinaisons (produit cartésien) de leurs valeurs.

Solution :

Cette tâche peut être résolue efficacement en utilisant la récursivité. Cela implique de parcourir chaque tableau et de combiner ses valeurs avec toutes les combinaisons possibles des tableaux restants.

Considérez l'implémentation suivante :

function allPossibleCases(arr) {
  if (arr.length === 1) {
    return arr[0];
  } else {
    const result = [];
    const casesOfRest = allPossibleCases(arr.slice(1));  // recur with the rest of arr
    casesOfRest.forEach((c) => {
      for (let i = 0; i < arr[0].length; i++) {
        result.push(arr[0][i] + c);
      }
    });
    return result;
  }
}
Copier après la connexion

Utilisation :

var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];
var results = allPossibleCases(allArrays); // outputs ["acd", "bcd", "azd", ...]
Copier après la connexion

Explication :

  • La fonction allPossibleCases prend un tableau de tableaux en entrée.
  • Si le tableau d'entrée n'a qu'un seul sous-tableau , il renvoie ses valeurs.
  • Sinon, il s'appelle récursivement avec les sous-tableaux restants et combine chaque valeur de sous-tableau avec toutes les combinaisons possibles des sous-tableaux restants.
  • La fonction parcourt chaque sous-tableau et concatène ses valeurs avec chaque combinaison des tableaux restants, générant toutes les combinaisons possibles.
  • Le résultat final est un tableau de chaînes contenant toutes les combinaisons uniques de valeurs des tableaux d'entrée.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal