Maison > interface Web > js tutoriel > Comment générer efficacement des produits cartésiens à partir de tableaux de longueurs variables en JavaScript ?

Comment générer efficacement des produits cartésiens à partir de tableaux de longueurs variables en JavaScript ?

Susan Sarandon
Libérer: 2024-11-30 01:52:10
original
854 Les gens l'ont consulté

How to Efficiently Generate Cartesian Products from Arrays of Varying Lengths in JavaScript?

Génération de produits cartésiens pour des tableaux variables en JavaScript

Pour générer toutes les combinaisons possibles d'éléments tirés d'un ensemble de tableaux de longueurs variables, les programmeurs JavaScript sont confrontés à un défi unique. Personnaliser une solution pour gérer un nombre dynamique de tableaux peut être délicat.

Une approche simple et efficace consiste à utiliser une fonction d'assistance récursive comme celle illustrée ci-dessous :

function cartesian(...args) {
  var r = [], max = args.length - 1;
  function helper(arr, i) {
    for (var j = 0, l = args[i].length; j < l; j++) {
      var a = arr.slice(0); // clone arr
      a.push(args[i][j]);
      if (i == max) r.push(a);
      else helper(a, i + 1);
    }
  }
  helper([], 0);
  return r;
}
Copier après la connexion

Pour l'utiliser fonction, transmettez simplement vos tableaux comme arguments :

cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
Copier après la connexion

La sortie contiendra toutes les combinaisons possibles d'éléments à partir des éléments fournis arrays :

[
  [0, 0, 0],
  [0, 0, 1],
  [0, 0, 2],
  [0, 1, 0],
  [0, 1, 1],
  [0, 1, 2],
  [0, 2, 0],
  [0, 2, 1],
  [0, 2, 2],
]
Copier après la connexion

Pour un tableau de tableaux, ajustez la signature de la fonction sur la fonction cartésienne (args) au lieu d'utiliser les paramètres de repos. Cette approche permet de gérer n'importe quel nombre de tableaux avec un nombre d'éléments variable, offrant ainsi une solution flexible à ce problème combinatoire.

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 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