Maison >interface Web >js tutoriel >Comment générer toutes les combinaisons possibles à partir de N tableaux avec M éléments chacun en JavaScript ?
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; }
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]);
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], // ... ]
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!