배열이란 무엇입니까? - 4부



Array.reduce(): 추가



배열의 단일 값은 reduce() 함수를 사용하여 계산할 수 있습니다. 즉, 배열은 단일 값으로 압축됩니다.

예시:




const numbers = [20, 13, 5, 31];

const sum = numbers.reduce((accumulator, current) => {
   return accumulator + current;
}, 0);


단계별로 살펴보겠습니다.


  • .reduce() 배열에서 numbers 메서드를 호출합니다.
  • numbers.reduce()의 결과를 sum라는 새 변수에 할당합니다.
  • 감소 방법에는 감소기와 시작 값이라는 두 개의 매개변수가 필요합니다.

  • 감속기



    예시:




    (accumulator, current) => {
       return accumulator + current;
    }
    


    이것은 배열의 각 요소에 적용되는 콜백이지만 이 콜백에는 accumulatorcurrent 두 개의 매개변수가 있습니다.

    reduce 함수가 마지막으로 계산한 마지막 값은 항상 accumulator에서 참조합니다. 또한 current라는 용어는 배열의 단일 요소를 나타냅니다.

    예시:




    const numbers = [20, 13, 3, 31];
    
    const sum = numbers.reduce((accumulator, current) => {
       return accumulator + current;
    }, 0);
    


    상해:



    콜백이 처음 실행될 때 accumulator는 0(초기값 때문에)으로 설정되고 current는 배열의 첫 번째 요소로 설정됩니다. 결과적으로 누산기는 0이고 전류는 20입니다.

    그런 다음 0 + 20 = 20인 accumulator + current를 출력합니다. accumulator의 업데이트된 값은 20입니다.

    콜백은 current = 13 (배열의 두 번째 항목) 및 accumulator = 20 로 두 번째로 실행됩니다. 우리는 accumulator + current , 즉 20 + 13 = 33 를 반환합니다. accumulator는 33입니다.

    콜백은 current = 3 (배열의 세 번째 항목) 및 accumulator = 33 로 세 번째로 실행됩니다. 우리는 accumulator + current , 즉 33 + 3 = 36 를 반환합니다. accumulator는 36입니다.

    콜백은 current = 31 (배열의 네 번째 항목) 및 accumulator = 36 로 네 번째로 실행됩니다. 우리는 accumulator + current , 즉 36 + 31 = 67 를 반환합니다. accumulator는 67입니다.

    배열에는 추가 항목이 없으므로 감소는 accumulator 의 최종 값인 67을 생성합니다.

    초기 값


    ReducerinitialValue.reduce() 방법이 허용하는 두 개의 매개변수입니다(reducer의 두 매개변수, 즉 accumulatorcurrent와 혼동하지 마십시오). 콜백이 처음 실행될 때 accumulator에 할당하는 값을 initialValue라고 합니다.

    콜백이 처음 실행될 때 JavaScript는 자동으로 initialValue를 가져와 accumulatorreducer 매개변수로 전달합니다.

    Array.reduce(): 곱셈



    예시:




    const numbers = [1, 2, 5];
    
    const finalResult = numbers.reduce((accumulator, current) => {
       return accumulator * current;
    }, 1);
    console.log(finalResult); // 10
    


    곱셈의 초기값


    0 값으로 곱셈을 시작할 수 없습니다. 이는 숫자에 0을 곱하면 01 * 0 = 0이 생성되기 때문입니다. 어떤 숫자에 1을 곱해도 결과는 같으므로 숫자1는 곱셈에서 중립 승수 역할을 합니다. 예: 1 * 1 = 1 .

    이것이 곱셈에 시작 값1을 사용하고 덧셈에 시작 값0을 사용하는 이유입니다.

    예시:




    const numbers = [1, 2, 5];
    
    const finalResult = numbers.reduce((accumulator, current) => {
       return accumulator * current;
    }, 1);
    


    상해:



    콜백이 처음 실행될 때 accumulator는 1로 설정되고(초기 값으로 인해) current는 배열의 첫 번째 요소로 설정됩니다. 결과적으로 accumulator는 1이고 current는 1입니다.

    그런 다음 1 * 1 = 1인 accumulator * current를 출력합니다. accumulator의 업데이트된 값은 1입니다.

    콜백은 current = 2 (배열의 두 번째 항목) 및 accumulator = 1 로 두 번째로 실행됩니다. 우리는 accumulator * current , 즉 1 * 2 = 2 를 반환합니다. accumulator는 2입니다.

    콜백은 current = 5 (배열의 세 번째 항목) 및 accumulator = 2 로 세 번째로 실행됩니다. 우리는 accumulator * current , 즉 2 * 5 = 10 를 반환합니다. accumulator는 10입니다.
    .reduce()의 결과는 변수 finalResult에 저장되는 10입니다.

    아래 댓글 섹션에서 의견을 공유해 주세요. 당신의 생각을 듣고 싶습니다. 아니면 들러서 '👋'라고 말해주세요.

    좋은 웹페이지 즐겨찾기