Heim > Artikel > Web-Frontend > Tag/Tage des Codes: Herausforderung für Kreditkartenprüfer
So, 15. September 2024
Diese Woche drehte sich alles um Code-Herausforderungen, was großartig war! Eine faszinierende Herausforderung bestand darin, einen Kreditkartenprüfer mit dem Luhn-Algorithmus zu implementieren, der einstellige Kreditkartenfehler und angrenzende Vertauschungen wie 90 > verhindert. 09. Die Codierung des Luhn-Algorithmus ist durchaus machbar; Lassen Sie uns meine Implementierung durchgehen.
Nehmen wir uns zunächst einen Moment Zeit, um zu verstehen, worum es bei Functional Programming (FP) geht. Anstelle einer zwingenden Funktion, bei der Sie Kreditkartennummern zum Testen in eine Warteschlange stellen, kann die Überprüfung der Kreditkartennummer eine Methode sein, die Sie direkt auf Kreditkartennummernvariablen anwenden. Dieser modulare Ansatz erhöht den Wert Ihres Codes, da er ohne Umschreiben auf vielfältigere Weise verwendet werden kann. Ein Nebeneffekt bei FP ist, dass Daten zum Star werden – nicht Funktionen, was sehr rationalisiert aussieht.
Zu Beginn verwenden wir eine Pfeilfunktion im Einklang mit dem FP-Paradigma. Dies ist bei einzeiligen Funktionen wichtiger, aber dennoch praktisch.
Letzte Ziffer beiseite legen: Der erste Schritt im Luhn-Algorithmus besteht darin, die letzte Ziffer in einer Variablen beiseite zu legen, die wir lastDigit nennen. Dies folgt einer Standardmethode für den Zugriff auf Array-Elemente unter Verwendung der Array-Länge – 1, da Arrays mit der Elementnummerierung bei 0 beginnen. JavaScript stellt diese Funktion nativ für Arrays bereit.
Reihenfolge umkehren: Der Luhn-Algorithmus verarbeitet Kreditkartenziffern von rechts nach links. Der Einfachheit halber kehren wir die Anordnung um. JavaScript bietet zwei Methoden, um diesen Vorgang zu vereinfachen: Slice, um das erste bis vorletzte Element auszuwählen, und Reverse, um die Reihenfolge der Elemente im Array umzukehren. Wir weisen dies einem neuen Array mit dem Namen allExceptLastReversed zu.
Jedes andere Element verdoppeln: Der nächste Schritt erfordert eine feinere Kontrolle der Array-Element-Iteration als die iterativen Methoden von JavaScript bieten, daher verwenden wir eine traditionelle for-Schleife. In diesem Schritt wird jedes zweite Array-Element verdoppelt und, wenn der Wert höher als 9 ist, 9 subtrahiert.
Summiere die Elemente und validiere: Jetzt sind wir fast fertig. Wir möchten alle Array-Elemente summieren und überprüfen, ob sie durch 10 teilbar sind. JavaScript verfügt über eine iterative Methode namens Reduce, die eine Funktion, normalerweise Summe oder Produkt, auf jedes Element in einem Array anwendet und das Ergebnis akkumuliert. Hier summieren wir die umgekehrten, segmentierten Array-Elemente, fügen das lastDigit hinzu und prüfen, ob die Summe Modulo 10 0 ist.
JavaScript bietet auch logische Vergleiche, die als wahr oder falsch ausgewertet werden können, sogenannte boolesche Werte, bei denen es sich um die Rückgabewerte der Funktion handelt. JavaScript macht das Programmieren fast schon kunstvoll.
Diese Herausforderung war eine fantastische Möglichkeit, tiefer in funktionale und imperative Programmierparadigmen einzutauchen. Es betonte, wie wichtig es ist, modularen, wiederverwendbaren Code zu schreiben. Während ich meine 100 Tage Code-Reise fortsetze, freue ich mich darauf, weitere Herausforderungen anzugehen und mein Verständnis verschiedener Programmierkonzepte zu erweitern. Jeder Tag bringt neue Möglichkeiten zum Lernen und Wachsen mit sich und ich kann es kaum erwarten zu sehen, wohin mich diese Reise als nächstes führt.
Bleiben Sie dran für weitere Updates und viel Spaß beim Codieren! ?
Hier ist der vollständige Code:
const validateCred = (cardNumber) => { const lastDigit = cardNumber[cardNumber.length - 1]; let allExceptLastReversed = cardNumber.slice(0, -1).reverse(); for (let i = 0; i < allExceptLastReversed.length; i += 2) { allExceptLastReversed[i] *= 2; if (allExceptLastReversed[i] > 9) { allExceptLastReversed[i] -= 9; } } const sum = allExceptLastReversed.reduce((acc, curr) => acc + curr, 0) + lastDigit; // sum all digits return (sum % 10 === 0); };
Cross gepostet: Dev https://dev.to/jacobsternx und LinkedIn https://www.linkedin.com/in/jacobsternx
Das obige ist der detaillierte Inhalt vonTag/Tage des Codes: Herausforderung für Kreditkartenprüfer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!