Comment implémenter les fonctions de l'utilitaire JavaScript à l'aide de Reduce?



En ce qui concerne le code en JavaScript, les développeurs ont trouvé que la fonction de réduction était l'un des concepts les plus difficiles à résoudre. Selon Wikipedia, Reduce a plusieurs noms: Accumulez, pliez, compressez et agrégez. Ces noms indiquent clairement la signification et le fonctionnement de la fonction de réduction. L'idée derrière cela est de décomposer une structure en une seule valeur. Par conséquent, Reduce peut être défini comme une fonction qui convertit une liste en n'importe quel type de données.

Par exemple, vous pouvez réduire un tableau [5,4,3,2,1] en valeur 15 en les ajoutant simplement.

La fonction de réduction empêche les développeurs d'utiliser la boucle pour replier une liste en une seule valeur.

Dans ce blog, vous apprendrez des façons d'implémenter des fonctions bien connues en utilisant réduire comme cela a déjà été fait par les développeurs de la meilleure société de développement de logiciels .

J'ai répertorié 10 fonctions utilitaires JavaScript recréées à l'aide de la fonction de réduction. Alors, regardez ci-dessous ces fonctions: -

  • La carte


Paramètres utilisés


tableau (pour transformer la liste des éléments), fonction transform (est une fonction utilisée pour s'exécuter sur chaque élément)

Travailler


En utilisant la transformFunction donnée, chaque élément du tableau donné est transformé et renvoie un nouveau tableau d'éléments.

Comment l'implémenter?


const map = (transformFunction, array1) => array1.reduce((newArray1, xyz) => { newArray1.push(transformFunction(xyz)); return newArray1; }, [] ); 

Cas d'utilisation:


 const double = (x) => x * 2; const reverseString = (string) => string .split('') .reverse() .join(''); map(double, [200, 300, 400]); Output: [400, 600, 800] map(reverseString, ['Hello Alka', 'I love cooking']); // ['alkA olleH', 'gnikooc evol I'] 

  • Rejeter


Paramètres utilisés


tableau (liste des éléments / valeurs à filtrer), prédicat (fonction renvoyant une valeur vraie ou fausse)

Travailler

Rejeter a un comportement opposé pour filtrer mais identique comme ça. Si le prédicat renvoie une valeur fausse, seul l'élément sera ajouté au nouveau tableau. Sinon, l'élément sera exclu du nouveau tableau.

Comment l'implémenter?


 const reject = (predicate, arr3) => arr3.reduce((newArray, val3) => { if (predicate(val3) === false) { newArray.push(val3); } return newArray; }, [] ); 

Cas d'utilisation:


 const isEven = (z) => z % 2 === 0; reject(isEven, [1, 6, 4, 3]); // [1, 3] reject(equals4, [4, 2, 4, 3]); // [2, 3] 

  • Numériser


Paramètres utilisés


tableau (liste des éléments), réducteur (est une fonction qui reçoit deux paramètres, à savoir l'accumulateur et l'élément actuel de la liste des tableaux)

Travailler


Son fonctionnement est similaire pour réduire mais au lieu de renvoyer la valeur unique en conséquence, il retourne une liste de chaque valeur réduite correspondant à la sortie unique.

Comment l'implémenter?


 const scan = (reducer, initialVal, array) => { const reducedValues = []; array.reduce((acc, currentval) => { const newAcc = reducer(acc, currentval); reducedValues.push(newAcc); return newAcc; }, initialVal); return reducedValues; }; 

Cas d'utilisation:


 const add = (y, z) => y + z; const multiply = (y, z) => y * z; scan(add, 0, [1, 2, 3, 4]); // [1, 3, 6, 10] scan(multiply, 1, [1, 2, 3, 4]); // [1, 2, 6, 24] 

  • Filtrer


Paramètres utilisés


tableau (pour filtrer la liste des éléments), prédicat (est une fonction pour retourner une valeur fausse ou vraie)

Travailler


Ici, vous obtiendrez un nouveau tableau en sortie. Si la fonction de prédicat renvoie une valeur vraie, l'élément sera ajouté au nouveau tableau. Cependant, s'il renvoie false, l'élément sera exclu du nouveau tableau.

Comment l'implémenter?


 const filter = (predicate, arr1) => arr1.reduce((newArray, val) => { if (predicate(val) === true) { newArray.push(val); } return newArray; }, [ ] ); 

Cas d'utilisation:


 const isEven = (y) => y % 2 === 0; filter(isEven, [3, 2, 5]); // [2] filter(equals3, [7, 1, 3, 6, 3]); // [3, 3] 

  • Aucun


Paramètres utilisés


tableau (liste des éléments à tester), prédicat (fonction pour renvoyer la valeur true ou false)

Travailler


Ici, aucun ne renvoie la valeur vraie si le prédicat renvoie une valeur fausse pour chaque élément. Sinon, il retournera une fausse valeur pour chaque vraie valeur de prédicat.

Comment l'implémenter?


 const none = (predicate, array) => array.reduce((acc1, val1) => !acc1 && !predicate(val1), false); 

Cas d'utilisation:


 const isEven2 = (x) => x % 2 === 0; none(isEven2, [1, 3, 5]); // true none(isEven2, [1, 3, 4]); // false none(sequl3, [1, 2, 4]); // true none(sequl3, [1, 2, 3]); // false 

  • Partition


Paramètres utilisés


tableau (contient une liste d'éléments), prédicat (fonction renvoyant une valeur fausse ou vraie)

Travailler


Il définit la division d'un tableau en deux en fonction de la valeur de prédicat. Si le prédicat renvoie une valeur vraie, l'élément ira à list1. Sinon, il ira à la liste2. La méthode pour diviser le tableau en différents morceaux a été utilisée par les programmeurs modernes associés aux meilleures sociétés de développement de logiciels. Jetons un coup d'œil aux étapes suivantes:

Comment l'implémenter?


 const partition = (predicate, array) => array.reduce( (result3, item) => { const [list1, list2] = result; if (predicate(item) === true) { list1.push(item); } else { list2.push(item); } return result3; }, [ [], [] ] ); 

Cas d'utilisation:


 const isEven = (z) => z % 2 === 0; partition(isEven, [1, 2, 3]); // [[2], [1, 3]] partition(isEven, [1, 3, 5]); // [[], [1, 3, 5]] partition(equals3, [1, 2, 3, 4, 3]); // [[3, 3], [1, 2, 4]] partition(equals3, [1, 2, 4]); // [[], [1, 2, 4]] 

  • Tous


Paramètres utilisés


tableau (pour tester la liste des éléments), prédicat (est une fonction pour retourner la valeur true ou false)

Travailler


En fournissant une valeur d'entrée, si le prédicat renvoie la valeur true, tous renverront la valeur true. Sinon, il retournera une fausse valeur.

Comment l'implémenter?


 const all = (predicate, array) => array.reduce((arr, val) => arr && predicate(val), true); 

Cas d'utilisation:


 const sequl3 = (x) => x === 3; all(sequl3, [3]); // true all(sequl3, [3, 3, 3]); // true all(sequl3, [1, 2, 3]); // false all(sequl3, [3, 2, 3]; // false 

  • Certains


Paramètres utilisés


tableau (pour tester la liste des éléments), prédicat (est une fonction pour renvoyer la valeur true ou false)

Travailler


Pour toute valeur d'entrée, si le prédicat retourne vrai, alors certains retourneront vrai. Sinon, il retournera une fausse valeur.

Comment l'implémenter?


Prenons un exemple:

 const some = (predicate, array) => array.reduce((arc, val) => arc || predicate(val), false); 

Cas d'utilisation:


 const aqua3 = (x) => x === 3; some(aqua3, [3]); // it is true some(aqua3, [3, 3, 3]); // it is true some(aqua3, [1, 2, 3]); // it is true some(aqua3, [2]); // it is false 

  • Plumer


Paramètres utilisés


tableau (pour stocker la valeur des éléments), clé (pour extraire le nom de la clé de l'objet)

Travailler


Il peut extraire la clé donnée de chaque élément du tableau et renvoie en outre un nouveau tableau des valeurs respectives.

Comment l'implémenter?


 const pluck = (key3, array) => array.reduce((values3, current) => { values.push(current[key3]); return values3; }, [] ); 

Cas d'utilisation:


 pluck('name', [{ name: 'Soman' }, { name: 'Rovin' }, { name: 'Jojo' }]); // ['Soman', 'Rovin', 'Jojo'] pluck(0, [[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // [1, 4, 7] 

  • Trouver


Paramètres utilisés


tableau (pour rechercher des éléments dans la liste des tableaux), prédicat (fonction renvoyant une valeur fausse ou vraie)

Travailler


Il retournera le premier élément qui correspond au prédicat donné et si aucune correspondance n'est trouvée, alors undefined est retourné.

Comment l'implémenter?


 const find = (predicate, array) => array.reduce((output, item) => { if (output !== undefined) { return output; } if (predicate(item) === true) { return item; } return undefined; }, undefined); 

Cas d'utilisation:


 const isEven = (a) => a % 2 === 0; find(isEven, []); // undefined find(isEven, [1, 2, 5]); // 2 find(isEven, [5, 3, 7]); // undefined find(equals3, [5, 2, 3, 4, 3]); // 3 find(equals3, [7, 2, 4]); // undefined 

Note finale:


C'est ainsi que vous pouvez implémenter des fonctions utilitaires JavaScript en utilisant réduire en moins de temps. Cela aidera certainement les développeurs de logiciels à gagner du temps ainsi que leurs efforts de codage. Dans le cas où vous avez besoin d'un support parfait pour vos requêtes de codage, vous pouvez contacter une société de développement de logiciels spécialisée pour les besoins de votre projet.

Source: https://habr.com/ru/post/fr476830/


All Articles