Maison > interface Web > js tutoriel > Comment générer toutes les combinaisons possibles à partir de N tableaux avec M éléments chacun en JavaScript ?

Comment générer toutes les combinaisons possibles à partir de N tableaux avec M éléments chacun en JavaScript ?

Patricia Arquette
Libérer: 2024-11-30 16:27:11
original
925 Les gens l'ont consulté

How to Generate All Possible Combinations from N Arrays with M Elements Each in JavaScript?

Génération de combinaisons à partir de N tableaux avec M éléments en JavaScript [Dupliquer]

Introduction
La combinaison d'éléments de plusieurs tableaux peut donner de nombreuses combinaisons , qui sont souvent essentiels dans l'analyse statistique ou les problèmes combinatoires. Cet article présente une solution complète en JavaScript pour générer toutes les combinaisons possibles à partir de N tableaux, chacun contenant M éléments.

Approche récursive
La solution fournie utilise une fonction d'assistance récursive pour construire des combinaisons. progressivement. La fonction parcourt chaque tableau, y compris ses éléments dans la combinaison résultante. Si le tableau actuel est le dernier, la combinaison terminée est ajoutée au tableau résultat. Sinon, la fonction récidive avec la combinaison mise à jour et passe au tableau suivant.

Implémentation

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

Utilisation
Pour générer combinaisons à partir d'une liste de tableaux, nous passons les tableaux comme arguments au cartésien fonction.

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

Le résultat sera un tableau contenant toutes les combinaisons possibles :

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

Remarque
Si on préfère passer un tableau de tableaux au lieu d'arguments individuels, nous pouvons modifier la signature de la fonction en fonction cartésienne (args).

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