So implementieren Sie JavaScript-Dienstprogrammfunktionen mit Reduce



Wenn es um Code in JavaScript geht, haben Entwickler die Reduction-Funktion als eines der am schwierigsten zu knackenden Konzepte eingestuft. Laut Wikipedia hat Reduce mehrere Namen, nämlich. Akkumulieren, Falten, Komprimieren und Aggregieren. Diese Namen geben deutlich die Bedeutung und Funktionsweise der Reduktionsfunktion an. Die Idee dahinter ist, eine Struktur in einen einzigen Wert zu zerlegen. Reduce kann daher als eine Funktion definiert werden, die eine Liste in einen beliebigen Datentyp konvertiert.

Zum Beispiel können Sie ein Array [5,4,3,2,1] auf den Wert 15 reduzieren, indem Sie es einfach hinzufügen.

Die Funktion "Reduzieren" hält Entwickler davon ab, "Schleife" zu verwenden, um eine Liste in einen einzigen Wert zu falten.

In diesem Blog erfahren Sie, wie Sie bekannte Funktionen mithilfe von Reduce implementieren, wie dies bereits von Entwicklern in Top-Softwareentwicklungsunternehmen durchgeführt wurde .

Ich habe 10 JavaScript-Hilfsprogrammfunktionen aufgelistet, die mit der Reduktionsfunktion neu erstellt wurden. Schauen Sie sich also die folgenden Funktionen an:

  • Karte


Verwendete Parameter


array (um eine Liste von Elementen zu transformieren), transform Function (ist eine Funktion, die für jedes Element verwendet wird)

Arbeiten


Mit der angegebenen transformFunction wird jedes Element im angegebenen Array transformiert und gibt ein neues Array von Elementen zurück.

Wie implementieren?


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

Anwendungsfall:


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

  • Ablehnen


Verwendete Parameter


Array (Liste der zu filternden Elemente / Werte), Prädikat (Funktion, die einen wahren oder falschen Wert zurückgibt)

Arbeiten

Ablehnen hat ein entgegengesetztes Verhalten zu filtern, ist aber dasselbe. Wenn das Prädikat einen falschen Wert zurückgibt, wird nur das Element zum neuen Array hinzugefügt. Andernfalls wird das Element aus dem neuen Array ausgeschlossen.

Wie implementieren?


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

Anwendungsfall:


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

  • Scannen


Verwendete Parameter


array (list of items), reducer (ist eine Funktion, die zwei Parameter erhält, dh akkumulator & aktuelles Element aus der Liste von array)

Arbeiten


Die Funktionsweise ähnelt der von "Reduzieren", es wird jedoch keine Liste aller reduzierten Werte zurückgegeben, die der einzelnen Ausgabe entsprechen.

Wie implementieren?


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

Anwendungsfall:


 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] 

  • Filter


Verwendete Parameter


Array (um die Liste der Elemente zu filtern), Prädikat (ist eine Funktion, die einen falschen oder wahren Wert zurückgibt)

Arbeiten


Hier erhalten Sie ein neues Array als Ausgabe. Wenn die Prädikatfunktion den Wert true zurückgibt, wird das Element dem neuen Array hinzugefügt. Wenn jedoch false zurückgegeben wird, wird das Element aus dem neuen Array ausgeschlossen.

Wie implementieren?


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

Anwendungsfall:


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

  • Keine


Verwendete Parameter


Array (zu testende Listenelemente), Prädikat (Funktion, die den Wert true oder false zurückgibt)

Arbeiten


Hier gibt none den Wert true zurück, wenn predicate für jedes Element den Wert false zurückgibt. Andernfalls wird für jeden wahren Wert des Prädikats ein falscher Wert zurückgegeben.

Wie implementieren?


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

Anwendungsfall:


 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


Verwendete Parameter


Array (enthält eine Liste von Elementen), Prädikat (Funktion, die den Wert false oder true zurückgibt)

Arbeiten


Es definiert die Aufteilung eines Arrays in zwei, basierend auf dem Prädikatwert. Wenn das Prädikat einen wahren Wert zurückgibt, wechselt das Element zu Liste1. Andernfalls wird es zur Liste2 gehen. Die Methode zum Aufteilen des Arrays in verschiedene Blöcke wurde von den modernen Programmierern verwendet, die mit den führenden Softwareentwicklungsunternehmen in Verbindung stehen. Werfen wir einen Blick auf die weiteren Schritte:

Wie implementieren?


 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; }, [ [], [] ] ); 

Anwendungsfall:


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

  • Alle


Verwendete Parameter


Array (um die Liste der Elemente zu testen), Prädikat (ist eine Funktion, die den Wert true oder false zurückgibt)

Arbeiten


Wenn das Prädikat bei Eingabe eines Eingabewerts den Wert true zurückgibt, geben alle den Wert true zurück. Andernfalls wird ein falscher Wert zurückgegeben.

Wie implementieren?


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

Anwendungsfall:


 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 

  • Einige


Verwendete Parameter


Array (um die Liste der Elemente zu testen), Prädikat (ist eine Funktion, die den Wert true oder false zurückgibt)

Arbeiten


Wenn das Prädikat für einen Eingabewert true zurückgibt, geben einige true zurück. Andernfalls wird ein falscher Wert zurückgegeben.

Wie implementieren?


Nehmen wir ein Beispiel dafür:

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

Anwendungsfall:


 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 

  • Zupfen


Verwendete Parameter


Array (um den Wert der Elemente zu speichern), Schlüssel (um den Schlüsselnamen vom Objekt zu übernehmen)

Arbeiten


Er kann den angegebenen Schlüssel von jedem Element im Array abziehen und gibt weiterhin ein neues Array der entsprechenden Werte zurück.

Wie implementieren?


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

Anwendungsfall:


 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] 

  • Finden


Verwendete Parameter


Array (um Elemente in der Liste des Arrays zu suchen), Prädikat (Funktion, die den Wert false oder true zurückgibt)

Arbeiten


Es wird das erste Element zurückgegeben, das mit dem angegebenen Prädikat übereinstimmt. Wird keine Übereinstimmung gefunden, wird undefined zurückgegeben.

Wie implementieren?


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

Anwendungsfall:


 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 

Schlussbemerkung:


Auf diese Weise können Sie Funktionen des JavaScript-Dienstprogramms in kürzerer Zeit implementieren. Dies wird auf jeden Fall Software-Entwicklern helfen, Zeit und Programmieraufwand zu sparen. Wenn Sie eine perfekte Unterstützung für Ihre Codierungsanfragen benötigen, können Sie sich für Ihre Projektanforderungen an ein erfahrenes Softwareentwicklungsunternehmen wenden.

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


All Articles