Maison >interface Web >js tutoriel >Comment puis-je calculer le produit cartésien de plusieurs tableaux en JavaScript ?

Comment puis-je calculer le produit cartésien de plusieurs tableaux en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-15 14:10:22143parcourir

How Can I Calculate the Cartesian Product of Multiple Arrays in JavaScript?

Le produit cartésien de plusieurs tableaux en JavaScript

JavaScript fournit un moyen simple de déterminer le produit cartésien de plusieurs tableaux. Le produit cartésien consiste à combiner des éléments de chaque tableau pour former un nouveau tableau, ce qui donne toutes les combinaisons possibles.

Par exemple, étant donné les tableaux [1, 2] et [10, 20], le produit cartésien serait [[1, 10], [1, 20], [2, 10], [2, 20]].

Solution 1 ligne avec JavaScript moderne (ECMAScript 2020) :

const cartesian = (...a) => a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat())));

Plongez plus profondément dans la solution :

Cette solution utilise deux fonctionnalités JavaScript clés :

  1. Spread Operator (... ): Cet opérateur est utilisé pour répartir les tableaux en arguments séparés, permettant de les fournir à une fonction comme paramètres.
  2. Array.reduce(...): Il est utilisé pour combiner récursivement les tableaux, chaque étape effectuant ce qui suit :

    • Aplatit le tableau de résultats actuel à l'aide de la méthode flatMap().
    • Itère sur le suivant tableau.
    • Ajoute chaque élément du tableau suivant au résultat aplati.
    • Aplatit à nouveau le résultat.

Exemple :

let output = cartesian([1, 2], [10, 20], [100, 200, 300]);

Cela produirait :

[[1, 10, 100],
 [1, 10, 200],
 [1, 10, 300],
 [1, 20, 100],
 [1, 20, 200],
 [1, 20, 300],
 [2, 10, 100],
 [2, 10, 200],
 [2, 10, 300],
 [2, 20, 100],
 [2, 20, 200],
 [2, 20, 300]]

JavaScript continue de évoluent et les nouvelles fonctionnalités introduites dans ECMAScript 2020 nous permettent d'écrire du code plus concis et efficace. Cette solution améliorée démontre la puissance du JavaScript moderne pour résoudre des problèmes complexes.

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