Regrouper les éléments d'un tableau en fonction d'une fonction

JavaScriptJavaScriptBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer la manière de regrouper les éléments d'un tableau en fonction d'une fonction fournie. Nous utiliserons la fonction unzipWith(), qui prend un tableau produit par la fonction zip() et applique la fonction fournie pour regrouper les éléments. À la fin de ce laboratoire, vous aurez une meilleure compréhension de la manière de manipuler les tableaux et d'effectuer des opérations personnalisées sur leurs éléments.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28680{{"Regrouper les éléments d'un tableau en fonction d'une fonction"}} javascript/data_types -.-> lab-28680{{"Regrouper les éléments d'un tableau en fonction d'une fonction"}} javascript/arith_ops -.-> lab-28680{{"Regrouper les éléments d'un tableau en fonction d'une fonction"}} javascript/comp_ops -.-> lab-28680{{"Regrouper les éléments d'un tableau en fonction d'une fonction"}} javascript/array_methods -.-> lab-28680{{"Regrouper les éléments d'un tableau en fonction d'une fonction"}} javascript/higher_funcs -.-> lab-28680{{"Regrouper les éléments d'un tableau en fonction d'une fonction"}} javascript/spread_rest -.-> lab-28680{{"Regrouper les éléments d'un tableau en fonction d'une fonction"}} end

Comment regrouper les éléments d'un tableau en fonction d'une fonction

Si vous avez besoin de regrouper les éléments d'un tableau produit par zip et d'appliquer une fonction, vous pouvez utiliser unzipWith. Voici comment vous pouvez l'implémenter :

  1. Utilisez Math.max() et l'opérateur de propagation (...) pour obtenir le plus long sous-tableau dans le tableau et Array.prototype.map() pour transformer chaque élément en tableau.
  2. Utilisez Array.prototype.reduce() et Array.prototype.forEach() pour mapper les valeurs regroupées dans des tableaux individuels.
  3. Utilisez Array.prototype.map() et l'opérateur de propagation (...) pour appliquer fn à chaque groupe individuel d'éléments.
const unzipWith = (arr, fn) =>
  arr
    .reduce(
      (acc, val) => (val.forEach((v, i) => acc[i].push(v)), acc),
      Array.from({
        length: Math.max(...arr.map((x) => x.length))
      }).map((x) => [])
    )
    .map((val) => fn(...val));

Pour utiliser unzipWith, ouvrez le Terminal/SSH et tapez node. Ensuite, vous pouvez exécuter l'exemple suivant :

unzipWith(
  [
    [1, 10, 100],
    [2, 20, 200]
  ],
  (...args) => args.reduce((acc, v) => acc + v, 0)
);
// [3, 30, 300]

Cela créera un tableau d'éléments en regroupant les éléments du tableau d'entrée produit par zip et en appliquant la fonction fournie.

Résumé

Félicitations ! Vous avez terminé le laboratoire Comment regrouper les éléments d'un tableau en fonction d'une fonction. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.