Heim > Web-Frontend > js-Tutorial > JavaScript-Array-Methoden anhand realer Szenarien erklärt

JavaScript-Array-Methoden anhand realer Szenarien erklärt

Mary-Kate Olsen
Freigeben: 2024-12-15 13:44:21
Original
531 Leute haben es durchsucht

JavaScript Array Methods Explained Through Real World Scenarios

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

map() und filter()

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

Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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)
}));
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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" }
];
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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())
    );
};
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

redu() – Mehr als nur Summen

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);
Nach dem Login kopieren
Nach dem Login kopieren

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 });
Nach dem Login kopieren
Nach dem Login kopieren

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.

find() und some()

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

Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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)
}));
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

flat() und flatMap()

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" }
];
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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())
    );
};
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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);
Nach dem Login kopieren
Nach dem Login kopieren

Sehen Sie, wie flatMap() sowohl die Transformation ALS AUCH das Reduzieren potenziell leerer Ergebnisse handhabt? Ziemlich schick!

every() und Includes()

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 });
Nach dem Login kopieren
Nach dem Login kopieren

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);
};
Nach dem Login kopieren

includes() sorgt dafür, dass sich unser Code wie einfaches Englisch liest. Viel besser als komplexe if-Anweisungen oder Schleifen.

Bestellen Ihrer Daten (sort())

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"
    };
};
Nach dem Login kopieren

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

Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

Best Practices und Leistung

Bevor Sie loslegen, lassen Sie uns dies mit ein paar kleinen Weisheiten abschließen, die dafür sorgen, dass Ihre Array-Methoden besser funktionieren.

Wann welche Methode anzuwenden ist

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)
}));
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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" }
];
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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())
    );
};
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage