Metoda Reduce
Część sekcji Logika i przepływ programu ścieżki JavaScript w Coddy. Lekcja 54 z 65.
Metoda reduce() pozwala „zredukować” tablicę do pojedynczej wartości, wykonując podaną funkcję dla każdego elementu tablicy. Ta pojedyncza wartość może być liczbą, ciągiem znaków, obiektem, a nawet inną tablicą.
Oto składnia reduktora:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
// zwróć zaktualizowaną wartość accumulator
}, initialValue);Kluczowe komponenty:
- akumulator: Gromadzi wartości zwracane przez funkcję zwrotną (pomyśl o nim jak o bieżącej sumie)
- currentValue: Bieżący element przetwarzany w tablicy
- currentIndex: (opcjonalnie) Indeks bieżącego elementu
- tablica: (opcjonalnie) Tablica, na której wywołano reduce()
- initialValue: (opcjonalnie) Wartość używana jako pierwszy argument pierwszego wywołania funkcji zwrotnej
Na przykład — suma liczb:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15Jak to działa krok po kroku:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => {
console.log(`Accumulator: ${acc}, Current Value: ${curr}`);
return acc + curr;
}, 0);
// Wynik:
// Akumulator: 0, bieżąca wartość: 1
// Akumulator: 1, bieżąca wartość: 2
// Akumulator: 3, bieżąca wartość: 3
// Akumulator: 6, bieżąca wartość: 4
// Wynik końcowy: 10Wyzwanie
ŁatwyUtwórz funkcję o nazwie calculateGroceryTotal, która przyjmuje tablicę obiektów reprezentujących produkty spożywcze.
Każdy obiekt ma dwie właściwości:
name: ciąg znaków (nazwa produktu)price: liczba (cena produktu)
Funkcja powinna:
- Obliczyć całkowity koszt wszystkich produktów
- Zastosować zniżkę: - Jeśli suma przekracza 100, zastosować zniżkę 10%
- Jeśli suma przekracza 50, ale jest mniejsza lub równa 100, zastosować zniżkę 5%
- Nie stosować zniżki, jeśli suma wynosi 50 lub mniej.
Zwrócić obiekt zawierający:
originalTotal: suma przed zniżkądiscount: zaoszczędzona kwotafinalTotal: końcowa kwota po zniżce
Spróbuj swoich sił
function calculateGroceryTotal(items) {
// Wpisz kod tutaj
return {
originalTotal: Math.round(originalTotal * 100) / 100, // Zaokrąglij do 2 miejsc po przecinku
discount: Math.round(discount * 100) / 100,
finalTotal: Math.round(finalTotal * 100) / 100
};
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Napisy w praktyce
Podstawy napisówIterowanie po napisachLiterały szablonoweMetody napisówPodsumowanie – mistrz napisów4JSON, część 2
Iterowanie po JSONZagnieżdżony JSONOpcjonalne łańcuchowanie w JSONPłytka i głęboka kopiaPowtórka — sklep rowerowyPowtórka — Układ Słoneczny7System zarządzania biblioteką
Omówienie projektuDodawanie książek10Zarządzanie systemem festiwalowym
Przegląd projektuDodawanie filmów i miejsc2Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DZagnieżdżone pętle z tablicami 2DPowtórka — tablice 2DDodawanie i odejmowanie macierzyTablice nieregularneTablice 3D i większeTypowe wzorce tablic 2DPowtórka — wszystko o tablicach5Zbiory — część 1
Czym jest zbiór?Iterowanie po zbiorachDodawanie elementuUsuwanie elementuSprawdzanie, czy element istniejeRozmiar i sprawdzanie, czy zbiór jest pustyKopiowanie i czyszczeniePodsumowanie — podstawy zbiorów8Ciekawe zagadnienia dotyczące tablic
Destrukturyzacja tablicSkładnia spread w tablicachRzadkie tablicePodsumowanie – warsztaty z tablic3JSON część 1
Czym jest JSON?Sprawdzanie, czy klucz istniejeMetody obiektówOperator spread — część 1Operator spread — część 2Usuwanie kluczyPodsumowanie — manipulowanie kluczami w JSON6Zbiory, część 2
Matematyka – suma zbiorówMatematyka – część wspólna zbiorówMatematyka – różnica zbiorówMatematyka – różnica symetrycznaPodzbiory i nadzbioryPowtórka – grupowanie znajomych9Zaawansowane metody tablic
Metody Join i SplitMetoda MapMetoda FilterMetoda ReduceŁączenie metod tablicCzy ForEach i Map to to samo?Metoda SortMetody Find i FindIndexPowtórka — mistrz łańcuchówPoćwicz samodzielnie: Kompilator JavaScript online