Maison >interface Web >js tutoriel >Comment générer toutes les combinaisons à partir de plusieurs tableaux en JavaScript ?

Comment générer toutes les combinaisons à partir de plusieurs tableaux en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-01 14:03:11551parcourir

How to Generate All Combinations from Multiple Arrays in JavaScript?

Générer des combinaisons à partir de plusieurs tableaux en JavaScript

En JavaScript, générer des combinaisons à partir de tableaux de différentes tailles peut être une tâche complexe. Explorons une solution utilisant une fonction d'assistance récursive.

Solution

La fonction cartésienne prend un nombre arbitraire de tableaux comme paramètres et renvoie un tableau de toutes les combinaisons possibles. Il utilise une fonction d'assistance récursive, helper, qui parcourt chaque élément d'un tableau et le pousse vers une version clonée de la combinaison actuelle. Si le tableau actuel n'est pas le dernier, il appelle récursivement helper pour générer toutes les combinaisons pour les tableaux restants.

La fonction cartésienne peut être utilisée comme suit :

cartesian([0,1], [0,1,2,3], [0,1,2]);

Cela produira les combinaisons souhaitées :

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

Utilisation

Pour utiliser cette solution avec un tableau de tableaux, passez simplement le tableau comme paramètre unique de la fonction cartésienne. La fonction d'assistance parcourra automatiquement les tableaux imbriqués pour générer toutes les combinaisons possibles.

Exemple

var data = [[0,1], [0,1,2,3], [0,1,2]];
var combinations = cartesian(data);

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