Heim >Web-Frontend >js-Tutorial >JavaScript-Array-Methoden anhand realer Szenarien erklärt
Haben Sie sich jemals die Dokumentation zu JavaScript-Array-Methoden angesehen und sich gefragt, wie zum Teufel sie im wirklichen Leben funktionieren?
Ich erinnere mich, dass ich buchstäblich meinen Kopf gegen die Wand schlug, um diese Methoden zu verstehen, als ich mit dem Codieren begann. Vertrauen Sie mir, Array-Methoden sind nicht nur dazu da, technische Interviews zu meistern, sie sind Ihre täglichen Leistungsfreunde in der realen Entwicklungswelt.
Heute zeige ich Ihnen, wann und wie Sie diese Array-Methode in realen Projekten verwenden.
Wenn Sie mit dem Lesen fertig sind, werden Sie feststellen, dass Array-Methoden Ihrem Code Klarheit und Lesbarkeit verleihen … Und, ganz zu schweigen davon, dass er dabei hilft, ihn vernünftig und wartbar zu halten.
Beginnen wir mit den Grundlagen
Beginnen wir zunächst mit ein paar Array-Methoden, die Sie höchstwahrscheinlich jeden Tag verwenden werden – map() und filter().
Erstellen eines Produktpreisrechners mit map()
Sie erstellen also eine E-Commerce-Website und haben eine Liste von Produkten, die um 20 % reduziert werden müssen.
So könnten Ihre Produktdaten aussehen:
const products = [ { name: "Gaming Mouse", price: 59.99 }, { name: "Mechanical Keyboard", price: 129.99 }, { name: "4K Monitor", price: 349.99 } ];
Anstatt eine unordentliche for-Schleife zu schreiben, macht map() dies super sauber:
const discountedPrices = products.map(product => ({ ...product, price: (product.price * 0.8).toFixed(2) }));
Jeder Preis ist jetzt reduziert und wir haben alle unsere ursprünglichen Produktinformationen beibehalten. Sauber und einfach.
Erstellen einer intelligenten Suchfunktion mit filter()
Jetzt bauen wir etwas Cooleres – eine intelligente Suche, die tatsächlich über mehrere Felder hinweg funktioniert.
Nehmen wir an, wir haben diese Benutzerdaten:
const users = [ { name: "Sarah Smith", email: "sarah@gmail.com", role: "developer" }, { name: "John Doe", email: "john@company.com", role: "designer" }, { name: "Mike Wilson", email: "mike@gmail.com", role: "developer" } ];
So führen Sie die einfache Suche mit filter() durch:
const searchUsers = (query) => { return users.filter(user => user.name.toLowerCase().includes(query.toLowerCase()) || user.email.toLowerCase().includes(query.toLowerCase()) || user.role.toLowerCase().includes(query.toLowerCase()) ); };
Richtig, Sie können nach Namen, E-Mails und Rollen suchen. Probieren Sie es mit searchUsers("dev") aus und es filtert nur Entwickler.
Und wenn Sie das cool fanden, warten Sie, bis wir im nächsten Abschnitt mit Reduce() beginnen.
Die meisten Entwickler verwenden Reduce() meist nur zum Hinzufügen von Zahlen. Aber Tatsache ist, dass es noch viel mehr kann – vertrauen Sie mir.
Warenkorbsumme berechnen
Ein echtes Szenario ist die Berechnung der Gesamtkosten der Produkte in einem Warenkorb unter Berücksichtigung von Rabatten und Steuern. Schauen Sie sich das an:
const cartItems = [ { name: "Nike Air Max", price: 129.99, quantity: 2, discount: 20 }, { name: "Adidas Hoodie", price: 89.99, quantity: 1, discount: 0 }, { name: "Running Socks", price: 12.99, quantity: 3, discount: 10 } ]; const cartTotal = cartItems.reduce((total, item) => { const itemTotal = item.price * item.quantity; const discount = (itemTotal * item.discount) / 100; return total + (itemTotal - discount); }, 0);
Schön, oder? Sie müssen nur eine Funktion für Mengen, Rabatte und Gesamtberechnung implementieren.
Dokumentstatistiktool
Wie wäre es mit der Bearbeitung eines Textdokuments? Wir zählen alle Wörter, Zeichen und Sätze:
const documentStats = paragraphs.reduce((stats, paragraph) => { return { words: stats.words + paragraph.split(' ').length, characters: stats.characters + paragraph.length, sentences: stats.sentences + paragraph.split(/[.!?]+/).length - 1, paragraphs: stats.paragraphs + 1 }; }, { words: 0, characters: 0, sentences: 0, paragraphs: 0 });
Sehen Sie also nicht, wie wunderbar Reduce() mehrere Dinge gleichzeitig handhabt? Das ist viel besser als die Verwendung separater Schleifen.
Profi-Tipp:Wenn Ihr Reduce()-Rückruf zu groß wird, sind kleine Funktionen immer eine Möglichkeit.
Lassen Sie uns zwei Methoden in Angriff nehmen, die Ihre Authentifizierungs- und Moderationssysteme wesentlich einfacher machen.
Erstellen eines Benutzerauthentifizierungssystems
Haben Sie schon einmal ein Anmeldesystem erstellt? So vereinfacht find() die Benutzersuche ganz einfach:
const products = [ { name: "Gaming Mouse", price: 59.99 }, { name: "Mechanical Keyboard", price: 129.99 }, { name: "4K Monitor", price: 349.99 } ];
Keine umständlichen Schleifen oder komplexen if-Anweisungen mehr. find() gibt genau das zurück, was Sie brauchen.
Aufbau eines Content-Moderationstools
Hier glänzt some() – Inhalte anhand verbotener Wörter oder Muster prüfen:
const discountedPrices = products.map(product => ({ ...product, price: (product.price * 0.8).toFixed(2) }));
Schauen Sie sich an, wie some() uns hilft, mehrere Bedingungen gleichzeitig zu überprüfen. Sauber, lesbar und wartbar.
Kurztipp: some() stoppt die Prüfung, sobald eine Übereinstimmung gefunden wird. Perfekt für die Leistung beim Umgang mit großen Datenmengen.
Der Array Flattener
Haben Sie jemals versucht, verschachtelte Arrays zu reduzieren? flat() ist dein bester Freund. Es glättet diese verschachtelten Arrays auf einer einzigen Ebene:
const users = [ { name: "Sarah Smith", email: "sarah@gmail.com", role: "developer" }, { name: "John Doe", email: "john@company.com", role: "designer" }, { name: "Mike Wilson", email: "mike@gmail.com", role: "developer" } ];
Mit dem Tiefenparameter können Sie sogar angeben, wie tief Sie abflachen möchten. Wenn keine Tiefe vorhanden ist, wird standardmäßig 1 verwendet.
flatMap() – Kommentarsystem mit Mehrfachantwort
Stellen Sie sich flatMap() als die Kombination von flat() und map() in einem verschachtelten Array vor. Es ordnet Ihr Array zu UND reduziert das Ergebnis – alles auf einmal!
Hier ist ein echtes Kommentarsystem, bei dem jeder Kommentar mehrere Antworten haben kann:
const searchUsers = (query) => { return users.filter(user => user.name.toLowerCase().includes(query.toLowerCase()) || user.email.toLowerCase().includes(query.toLowerCase()) || user.role.toLowerCase().includes(query.toLowerCase()) ); };
flatMap() ist perfekt, wenn Sie Elemente transformieren UND verschachtelte Ergebnisse verarbeiten müssen. Es ist, als ob man zwei Methoden zum Preis von einer bekommt!
Hier ist ein weiteres praktisches Beispiel – Hashtags aus Social-Media-Beiträgen extrahieren:
const cartItems = [ { name: "Nike Air Max", price: 129.99, quantity: 2, discount: 20 }, { name: "Adidas Hoodie", price: 89.99, quantity: 1, discount: 0 }, { name: "Running Socks", price: 12.99, quantity: 3, discount: 10 } ]; const cartTotal = cartItems.reduce((total, item) => { const itemTotal = item.price * item.quantity; const discount = (itemTotal * item.discount) / 100; return total + (itemTotal - discount); }, 0);
Sehen Sie, wie flatMap() sowohl die Transformation ALS AUCH das Reduzieren potenziell leerer Ergebnisse handhabt? Ziemlich schick!
Aufbau eines Formularvalidierungssystems
Versuchen wir, etwas zu erstellen, das wir täglich verwenden – einen robusten Formularvalidator. So macht every() alles sauber:
const documentStats = paragraphs.reduce((stats, paragraph) => { return { words: stats.words + paragraph.split(' ').length, characters: stats.characters + paragraph.length, sentences: stats.sentences + paragraph.split(/[.!?]+/).length - 1, paragraphs: stats.paragraphs + 1 }; }, { words: 0, characters: 0, sentences: 0, paragraphs: 0 });
every() prüft, ob ALLE Regeln erfüllt sind. Sie sehen, es ist perfekt für die Validierung, bei der alles wahr sein muss.
Erstellen eines Berechtigungsprüfers
So vereinfacht include() die Berechtigungsprüfung sehr einfach:
const users = [ { id: 1, email: "alex@tech.com", password: "hashed_password_1", attempts: 0 }, { id: 2, email: "sam@tech.com", password: "hashed_password_2", attempts: 1 } ]; const authenticateUser = (email, password) => { const user = users.find(u => u.email === email); if (!user) return { status: "error", message: "User not found" }; if (user.attempts >= 3) return { status: "error", message: "Account locked" }; return validatePassword(user, password); };
includes() sorgt dafür, dass sich unser Code wie einfaches Englisch liest. Viel besser als komplexe if-Anweisungen oder Schleifen.
Mussten Sie Daten jemals über die einfache alphabetische Reihenfolge hinaus sortieren? sort() ist viel leistungsfähiger als die meisten Entwickler denken.
Entwicklung eines benutzerdefinierten Tabellensortierers
Hier ist ein realer Tabellensortierer, der verschiedene Datentypen verarbeitet:
const bannedWords = ["spam", "scam", "inappropriate"]; const moderateContent = (content) => { const containsBannedWords = bannedWords.some(word => content.toLowerCase().includes(word) ); const hasSpamPatterns = content.includes("!!!") || content === content.toUpperCase(); return { isSpam: containsBannedWords || hasSpamPatterns, reason: containsBannedWords ? "Banned words detected" : "Spam patterns found" }; };
Keine separaten Funktionen mehr für verschiedene Spalten. Nur ein Sortierer erledigt alles!
Aufbau eines Bestenlistensystems
Schauen Sie sich diesen Bestenlisten-Sortierer an, der Tie-Breaks verwaltet:
const products = [ { name: "Gaming Mouse", price: 59.99 }, { name: "Mechanical Keyboard", price: 129.99 }, { name: "4K Monitor", price: 349.99 } ];
Sehen Sie, wie wir mit mehreren Sortierkriterien umgehen? Zuerst punkten, dann gewinnen, dann entscheidet die niedrigste Spielzeit über das Unentschieden.
Kurztipp: Erstellen Sie vor dem Sortieren immer eine Kopie Ihres Arrays, wenn Sie die ursprüngliche Reihenfolge beibehalten müssen.
Bevor Sie loslegen, lassen Sie uns dies mit ein paar kleinen Weisheiten abschließen, die dafür sorgen, dass Ihre Array-Methoden besser funktionieren.
Hier ist mein praktischer Leitfaden basierend auf dem, was Sie tun möchten:
const discountedPrices = products.map(product => ({ ...product, price: (product.price * 0.8).toFixed(2) }));
Machen Sie sich also keine Sorgen mehr über forEach- und for-Schleifen. Konzentrieren Sie sich stattdessen auf diese.
Was ist eigentlich wichtig und was nicht?
Zuletzt, bevor du gehst. Suchen Sie immer nach einer Möglichkeit, Dinge einfacher und besser zu machen. Zum Beispiel:
Stattdessen:
const users = [ { name: "Sarah Smith", email: "sarah@gmail.com", role: "developer" }, { name: "John Doe", email: "john@company.com", role: "designer" }, { name: "Mike Wilson", email: "mike@gmail.com", role: "developer" } ];
Machen Sie Folgendes immer:
const searchUsers = (query) => { return users.filter(user => user.name.toLowerCase().includes(query.toLowerCase()) || user.email.toLowerCase().includes(query.toLowerCase()) || user.role.toLowerCase().includes(query.toLowerCase()) ); };
Das ist es! Sie verfügen jetzt über praktische, praxisbezogene Kenntnisse der JavaScript-Array-Methoden. Setzen Sie sie mit Bedacht ein!
Denken Sie daran: Die Lesbarkeit des Codes ist besser als Mikrooptimierungen. Wählen Sie zuerst die Methode aus, die Ihren Code am klarsten macht.
Fragen? Schreiben Sie mir unten in die Kommentare! ?
Folgen Sie mir auf X (ehemals Twitter) für tägliche JavaScript-Weisheit! Ich teile mundgerechte Code-Tipps, behebe reale Probleme und informiere mich über Webentwicklung.
Bleiben Sie neugierig und denken Sie daran: Intelligente Entwickler kopieren und einfügen, aber brillante Entwickler verstehen, was sie kopieren. Erfahren Sie es im nächsten Beitrag! ✨
Das obige ist der detaillierte Inhalt vonJavaScript-Array-Methoden anhand realer Szenarien erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!