Menu
Coddy logo textTech

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:

  1. akumulator: Gromadzi wartości zwracane przez funkcję zwrotną (pomyśl o nim jak o bieżącej sumie)
  1. currentValue: Bieżący element przetwarzany w tablicy
  1. currentIndex: (opcjonalnie) Indeks bieżącego elementu
  1. tablica: (opcjonalnie) Tablica, na której wywołano reduce()
  1. 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); // 15

Jak 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: 10
challenge icon

Wyzwanie

Łatwy

Utwó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:

  1. Obliczyć całkowity koszt wszystkich produktów
  2. Zastosować zniżkę: - Jeśli suma przekracza 100, zastosować zniżkę 10%
  3. Jeśli suma przekracza 50, ale jest mniejsza lub równa 100, zastosować zniżkę 5%
  4. Nie stosować zniżki, jeśli suma wynosi 50 lub mniej.

Zwrócić obiekt zawierający:

  • originalTotal: suma przed zniżką
  • discount: zaoszczędzona kwota
  • finalTotal: 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
    };
}
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator JavaScript online