Filter-, Zuordnungs- und Reduziervorgänge
Leistungsfähige, schnelle und praktische Codeentwicklung mit Filter-, Zuordnungs- und Reduziervorgängen.
Ich vergleiche diese Vorgänge immer mit der Zubereitung einer Mahlzeit. Auf diese Weise wird es unvergesslicher. Ich werde schnell auf das Thema eingehen. Lassen Sie mich zunächst erklären, wie Melemen kodiert ist.
Um Melemen herzustellen, verwenden wir in unserer Küche viele Zutaten in bestimmten Anteilen. Welche Materialien werden wir also verwenden? Die arrayFilter-Funktion führt diesen Prozess durch, das heißt, sie extrahiert diejenigen, die wir benötigen, aus allen Daten, die wir haben. Daher ist die Filterfunktion erforderlich, um Salz, Öl, Tomate, Pfeffer und Ei zu finden, die wir für Melemen verwenden. Ungefilterte Daten können Dinge enthalten, die wir nicht wollen, genau wie unsere Küche. Wir haben jetzt die Materialien. Geben wir sie also in einen Topf und warten, bis sie kochen? Nein, wir müssen unbedingt die Tomaten und Paprika hacken und das Ei aufschlagen. Dazu müssen wir die arrayMap-Funktion verwenden. Der Kartenvorgang verarbeitet Daten und konvertiert sie in einen anderen Typ oder ein anderes Ergebnis. Mit anderen Worten: Operationen wie das Zerkleinern von Tomaten gehören zur Kartenfunktion. Wenn wir dies als Daten betrachten, können wir sagen, dass wir den Mehrwertsteuerbetrag als Ergebnis der Multiplikation des Mehrwertsteuersatzes mit dem reinen Betrag ermitteln. Tatsächlich ist der Mehrwertsteuerbetrag kein Wert, sondern ein Ergebnis. Oder innerhalb der Zeile verarbeitete Daten, beispielsweise die Nettosumme der Zeile, sollten mit einer Karte verarbeitet werden. Ja, wir haben nun die Zutaten aus unseren Zutaten verarbeitet, das heißt wir haben die Tomaten und Paprika geschnitten und das Ei zerschlagen. Jetzt ist es Zeit für den Kochteil. Reduzieren ist hier das Hauptproblem, auf das man achten muss. Denn das als Ergebnis der Reduzierungsoperation erhaltene Ergebnis führt nicht mehr zu den ursprünglichen Ergebnissen. Wenn man also Melemen kocht, nennen wir es nicht mehr die gekochte Version aus Tomaten, Paprika, Eiern, Öl und Salz, sondern direkt Melemen. Reduzieren erzeugt ein eindeutiges Ergebnis für eine Datenzeichenfolge. Beispielsweise können wir die Summe der Rechnungszeilen angeben. Manchmal ist auch eine Gruppierung möglich, beispielsweise Summen nach Mehrwertsteuersätzen. Auch wenn durch die Gruppierung mehr als ein Datenwert erstellt wird, ist eine Rückkehr zu den Hauptdaten nicht möglich. Es werden daher neue Daten erstellt. Ich bin nicht sehr gut in Rezepten, wenn ich es wäre, würde ich ein Kochbuch veröffentlichen, denn das wäre ein besserer Job als diese Software :)
Vorläufige Informationen für Funktionen, die mit Liste und Array beginnen
Wenn Sie Funktionen mit Listen- und Array-Präfixen sehen, die das gleiche Funktionspostfix haben, wählen Sie diejenigen aus, die mit Array beginnen. Beispielsweise führen die Funktionen arrayFilter und listFilter eine Filterung für Arrays und Listen durch. Aber eigentlich ist list ein virtuelles Array. Bei jeder Konvertierung der Liste in ein Array wird die Operation ausgeführt und anschließend die Liste erneut konvertiert. Aus diesem Grund müssen wir die Operation über ein Array ausführen, auch wenn das Ergebnis als Liste verwendet wird. Wenn unser Anfangswert eine Liste ist, müssen wir ihn mit listToArray in ein Array konvertieren, und nachdem alle Operationen abgeschlossen sind, muss er wieder in eine Liste konvertiert werden. Es ist notwendig, Listen jedes Mal in Arrays zu konvertieren und zu verhindern, dass sie erneut in Listen konvertiert werden. Aus diesem Grund wird unser Thema durch Array-Präfixfunktionen erläutert.
arrayFilter(array, function(element [,index [,array]])) array
Die Filterfunktion ermöglicht die Verarbeitung, indem alle Elemente im Array einzeln an die im zweiten Parameter angegebene Funktion gesendet werden. Die Elemente des Arrays werden über die Elementvariable, die Sequenznummer über den Index und der Hauptindex über die Arrayvariable an die Funktion übergeben. Zumindest die Elementvariable muss in der zu schreibenden Funktion angegeben werden, andere Variablen müssen nicht angegeben werden.
Die Filterung erfolgt im Allgemeinen durch Filtern der Elemente in einem Array. Es werden beispielsweise Rechnungen mit dem Kundennamen „Halit“ gefunden. Wenn wir dazu Datensätze mit dem Kundenfeld „Halit“ aus einem Array namens „Rechnungen“ auswählen möchten, können wir es wie folgt verwenden.
Es ist zu beachten, dass alle Funktionen, bei denen das Ergebnis als boolescher Wert zurückgegeben wird, für diesen Vorgang funktionieren können. Mit anderen Worten: Es wird bei komplexeren Operationen verwendet, beispielsweise bei Operationen, die in einem Funktionsblock ausgeführt werden und deren Ergebnis einen bestimmten Wert überschreitet. Wir sollten jedoch nicht vergessen, dass es sinnvoll wäre, die Daten zunächst durch Zuordnung zu berechnen und sie dann auf die einfache Filterebene zu reduzieren, wenn der im Filter zu berechnende und zu steuernde Wert später verwendet werden kann. Wenn jedoch nur das Berechnungsergebnis gefiltert wird, kann die Erstellung einer Karte die Erzeugung zusätzlicher Daten bedeuten. Ich möchte Sie darauf aufmerksam machen, dass wir in diesem Beispiel nicht erneut den Index und das Hauptarray verwendet haben.
arrayMap(array, function(element [,index [,array]])) array
Map-Funktion erstellt einen neuen Wert, indem alle Elemente im Array nacheinander an die im zweiten Parameter angegebene Funktion gesendet werden. Die Elemente des Arrays werden über die Elementvariable, die Sequenznummer über den Index und der Hauptindex über die Arrayvariable an die Funktion übergeben. In der zu schreibenden Funktion muss mindestens die Elementvariable angegeben werden, andere Variablen müssen nicht angegeben werden. Der hier erstellte neue Wert wird mit demselben Index zum Ergebnisarray hinzugefügt. Das hinzuzufügende Element kann eine neue Variable oder eine modifizierte Version der vorhandenen Variablen sein.
Es wird im Allgemeinen für Operationen verwendet, bei denen das Ergebnis durch Berechnung ermittelt wird. Wir können es für Vorgänge wie die Ermittlung des Mehrwertsteuerbetrags verwenden, indem wir die Gesamtzeilensumme mit dem Mehrwertsteuersatz multiplizieren, wie in dem Beispiel, das ich zuvor gegeben habe. Lassen Sie uns zum Beispiel die Felder „gesamt“ und „Mehrwertsteuer“ in einem Array haben und das Feld „vat_amount“ berechnen und zu dieser Zeile hinzufügen.
In diesem Beispiel wurde das Feld vat_amount für jedes Element im bill_satirlar-Array berechnet, zur vorhandenen Struktur hinzugefügt und die vorhandene und hinzugefügte Struktur wurde in einen neuen Wert konvertiert. Das Ergebnis wurde in dieselbe Variable übertragen, was geschah, weil dieselbe Variable geändert wurde (d. h. die vorhandenen Werte wurden nicht beschädigt). Es ist sinnvoll, die Transaktion auf diese Weise durchzuführen. Wenn Sie jedoch etwas tun, das die Elemente im Array von den alten unterscheidet, kann es ein falscher Schritt sein, sie der alten Array-Variablen zuzuweisen. Beispielsweise können wir die TL-Werte im Array in USD konvertieren und in ein neues Array importieren.
arrayReduce(array, function(result, element [, index [, array]]) [,initial_value]) any
Reduce-Funktion sendet jedes Element im Array an die Funktion, weist es dem Ergebniswert zu und gibt den Ergebniswert als Ergebnis zurück. Obwohl dieser Vorgang etwas verwirrend ist, können wir ihn tatsächlich mit einem System vergleichen, bei dem wir das Ergebnis jeder Zeile zum Ergebniswert addieren und die Funktion erneut aufrufen, indem wir den letzten Ergebniswert angeben.
Es wird im Allgemeinen in Operationen wie Zwischensummen oder Gruppierungssummen verwendet. Lassen Sie uns zum Beispiel die Summe einer Rechnung und die Mehrwertsteuersummen entsprechend dem Mehrwertsteuersatz ermitteln.
In diesem Beispiel werden sowohl die einfache Logiksumme als auch die Gruppierungslogiksumme genommen. Während das Endergebnis dadurch erreicht wird, dass der Ergebniswert jedes Mal in der einfachen Summe addiert wird, wird im Prozess der Gruppierung eine weitere Struktur erstellt und zurückgegeben. Der hier zu berücksichtigende Punkt besteht darin, den Ergebniswert vor Beginn der Operationen auf den Anfangswert zu setzen, da initial_value nicht immer stabil arbeitet.
Pipe-Operationen
Dieses Konzept wird für Operationen verwendet, die versuchen, Ergebnisse durch sequentielles und miteinander verflochtenes Arbeiten zu erzielen. Nehmen wir zum Beispiel die Gesamtsumme des Mehrwertsteuerbetrags der Nicht-Werbezeilen innerhalb der Rechnungszeilen.
Sie können die Filterkarte aufrufen und den Vorgang aufgrund des miteinander verflochtenen Bedarfs unendlich oft reduzieren, filtern, berechnen und erneut nach dem berechneten Feld filtern, ein gruppiertes Ergebnis erstellen, berechnen, dieses Ergebnis filtern und es wieder in ein Ergebnis umwandeln. Mit diesem ineinander verschlungenen Trio können Sie die Codes also schnell nach Ihren Wünschen ändern. Natürlich müssen Sie nicht alle drei verwenden, Sie können Ihre Anforderungen auch nur mit einem binären Prozess wie Filtern und Zuordnen erfüllen, oder Sie können hierarchische Daten auf höhere Ebenen bringen, indem Sie sie berechnen, z. B. Zuordnen und Reduzieren.
Angemessener Ansatz
Sir, Sie können sagen, dass wir diese Operationen beispielsweise berechnen können, während wir Schleifenoperationen in Tabellen ausführen, also die Felder auf dem Bildschirm drucken. Der wichtige Punkt besteht jedoch darin, zwischen dem Modell und der Ansicht zu unterscheiden.
Der Zweck der drei wichtigen Funktionen, die ich in diesem Thema angegeben habe, und der anderen Funktionen, die ich nicht angegeben habe, besteht darin, das Modell zu formen. Mit anderen Worten: Andere Softwareentwickler werden klar verstehen, welche Pipe-Operationen Sie am Modell ausführen und welche Berechnungen und Ergebnisse Sie in der von der Community entwickelten Software auf Modellebene durchführen, und sie werden wissen, dass im HTML- und anderen Code keine Aggregatoperationen verborgen sind. Wenn Sie den Vorgang vor der Ausgabe abschließen können, öffnen Sie beim Hinzufügen eines neuen Features entweder einen weiteren Knoten auf der Pipe oder weisen einer neuen Variablen die erforderlichen Werte zu. Transaktionen im traditionellen Schleifenprozess, auch Spaghetti genannt, führen zu Codes, die schwer zu verstehen sind, voller übersehener Berechnungen oder riskant und schwer zu durchbrechen sind. Der Clean-Code-Ansatz stellt sicher, dass die Modell- und Ansichtscodes voneinander isoliert und so weit wie möglich gruppiert sind, auch wenn sie sich in derselben Datei befinden. Darüber hinaus minimieren diese Funktionen den Code und eliminieren die Menge an Zwischenvariablen, die im Spaghetti-Prozess auftreten. Ich werde diese Funktionen, die einige Einschränkungen im Konzept der Abfrage und der mit der Abfrage der Abfrage verflochtenen Arbeit überwinden können, in meinem Artikel, den ich später veröffentlichen werde, ausführlich erläutern.
Geschrieben von: Halit Yurttaş – Workcube Software Architecture