> 웹 프론트엔드 > JS 튜토리얼 > 실제 예제를 포함한 JavaScript `reduce()` 메소드에 대한 종합 가이드

실제 예제를 포함한 JavaScript `reduce()` 메소드에 대한 종합 가이드

Barbara Streisand
풀어 주다: 2024-12-10 02:06:14
원래의
188명이 탐색했습니다.

Comprehensive Guide to JavaScript `reduce()` Method with Real-Life Examples

reduce() 메서드는 JavaScript의 강력한 배열 메서드로, 배열을 반복하여 단일 값으로 줄이는 데 사용됩니다. 이 방법은 다목적이며 숫자 합산, 배열 평면화, 객체 생성 등과 같은 작업을 처리할 수 있습니다.


감소() 구문

array.reduce(callback, initialValue);
로그인 후 복사
로그인 후 복사
  • 콜백: 배열의 각 요소에 대해 실행되는 함수입니다.
    • Accumulator: 이전 콜백 실행에서 누적된 결과입니다.
    • currentValue: 현재 처리 중인 요소입니다.
    • currentIndex (선택 사항): 현재 요소의 인덱스입니다.
    • array (선택 사항): 배열 축소가 호출되었습니다.
  • initialValue (선택 사항): 콜백의 첫 번째 호출에 대한 첫 번째 인수로 사용할 값입니다.

Reduce()가 단계별로 작동하는 방법

  1. initialValue로 시작하거나,initialValue가 제공되지 않은 경우 배열의 첫 번째 요소로 시작하세요.
  2. 누산기와 currentValue를 콜백 함수에 전달합니다.
  3. 콜백에서 반환된 값으로 누산기를 업데이트합니다.
  4. 모든 요소가 처리될 때까지 반복합니다.
  5. 최종 누적값을 반환합니다.

예 1: 배열의 합계 계산(실제: 장바구니)

장바구니가 있고 품목의 총 가격을 계산하려고 한다고 가정해 보겠습니다.

const cart = [
    { item: "Laptop", price: 1200 },
    { item: "Phone", price: 800 },
    { item: "Headphones", price: 150 }
];

const totalPrice = cart.reduce((acc, curr) => acc + curr.price, 0);

console.log(`Total Price: $${totalPrice}`); // Total Price: 50
로그인 후 복사

예 2: 카테고리별로 품목 그룹화(실제: 재고 정리)

항목을 카테고리별로 그룹화하고 싶습니다.

const inventory = [
    { name: "Apple", category: "Fruits" },
    { name: "Carrot", category: "Vegetables" },
    { name: "Banana", category: "Fruits" },
    { name: "Spinach", category: "Vegetables" }
];

const groupedItems = inventory.reduce((acc, curr) => {
    if (!acc[curr.category]) {
        acc[curr.category] = [];
    }
    acc[curr.category].push(curr.name);
    return acc;
}, {});

console.log(groupedItems);
/*
{
    Fruits: ['Apple', 'Banana'],
    Vegetables: ['Carrot', 'Spinach']
}
*/
로그인 후 복사

예 3: 중첩 배열 평면화(실제: 부서 데이터 병합)

다른 부서로부터 중첩된 배열로 데이터를 수신하고 이를 하나로 결합해야 합니다.

const departmentData = [
    ["John", "Doe"],
    ["Jane", "Smith"],
    ["Emily", "Davis"]
];

const flattenedData = departmentData.reduce((acc, curr) => acc.concat(curr), []);

console.log(flattenedData); // ['John', 'Doe', 'Jane', 'Smith', 'Emily', 'Davis']
로그인 후 복사

예시 4: 발생 횟수 계산(실제: 분석)

웹사이트 페이지 조회수가 다양하고 각 페이지를 방문한 횟수를 계산하고 싶습니다.

const pageViews = ["home", "about", "home", "contact", "home", "about"];

const viewCounts = pageViews.reduce((acc, page) => {
    acc[page] = (acc[page] || 0) + 1;
    return acc;
}, {});

console.log(viewCounts);
/*
{
    home: 3,
    about: 2,
    contact: 1
}
*/
로그인 후 복사

예제 5: Reduce()를 사용하여 사용자 정의 지도 구현

reduce() 메소드는 map()의 기능을 모방할 수 있습니다.

const numbers = [1, 2, 3, 4];

const doubled = numbers.reduce((acc, curr) => {
    acc.push(curr * 2);
    return acc;
}, []);

console.log(doubled); // [2, 4, 6, 8]
로그인 후 복사

예 6: 최대값 찾기(실제: 최고 매출 찾기)

데이터세트에서 가장 높은 매출 수치를 찾고 싶습니다.

const sales = [500, 1200, 300, 800];

const highestSale = sales.reduce((max, curr) => (curr > max ? curr : max), 0);

console.log(`Highest Sale: $${highestSale}`); // Highest Sale: 00
로그인 후 복사

예시 7: 데이터 변환(실제: API 데이터 변환)

사용자 데이터 배열을 수신하고 이를 사용자 ID로 키가 지정된 개체로 변환해야 합니다.

array.reduce(callback, initialValue);
로그인 후 복사
로그인 후 복사

팁과 모범 사례

  1. initialValue 사용: 빈 배열을 처리할 때 예기치 않은 동작을 방지하려면 항상initialValue를 제공하세요.
  2. Keep it Simple: 간결하고 명확한 리듀서 함수를 작성하세요.
  3. 불변 업데이트: 객체나 배열로 작업할 때 리듀서 내에서 직접 변경하지 마세요.

결론

reduce() 메서드는 놀라울 정도로 다재다능하며 값 합산부터 데이터 구조 변환까지 다양한 작업에 적용할 수 있습니다. 이와 같은 실제 사례를 연습하여 이해를 심화하고 JavaScript 프로젝트에서 Reduce()의 잠재력을 최대한 활용하세요.

위 내용은 실제 예제를 포함한 JavaScript `reduce()` 메소드에 대한 종합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿