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.
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 :
- Utilisez
Math.max()et l'opérateur de propagation (...) pour obtenir le plus long sous-tableau dans le tableau etArray.prototype.map()pour transformer chaque élément en tableau. - Utilisez
Array.prototype.reduce()etArray.prototype.forEach()pour mapper les valeurs regroupées dans des tableaux individuels. - Utilisez
Array.prototype.map()et l'opérateur de propagation (...) pour appliquerfnà 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.