>  기사  >  웹 프론트엔드  >  JavaScript 배열 감소() 메서드

JavaScript 배열 감소() 메서드

王林
王林원래의
2024-08-28 06:05:02943검색

JavaScript Array reduce() Method

안녕하세요! 이번 블로그에서는 "reduce 메소드"와 이를 JavaScript에서 사용하는 방법에 대해 알아봅니다. 그럼 시작해 보겠습니다.

Reduce는 JavaScript의 배열 메소드 중 하나입니다. 배열을 입력으로 사용하고 단일 값을 반환합니다. 축소 메소드는 배열의 모든 요소를 ​​처리하고 제공된 콜백 함수를 기반으로 공통 값을 업데이트하려는 경우에 유용합니다.

더 자세히 살펴보겠습니다.
Reduce는 두 가지 인수를 사용합니다:

  1. 콜백 기능
  2. 시작점(초기값), "결과"라고 부르자(*선택사항)

배열의 첫 번째 요소부터 시작하여 이를 콜백 함수에 전달하고 결과를 "result"에 저장합니다. 마지막 요소를 처리한 후 최종 "결과"를 반환합니다.

*선택사항:

배열이 비어 있고 초기 값이 제공되지 않으면 초기 누산기 역할을 할 요소가 없기 때문에 축소는 TypeError를 발생시킵니다.

배열에 요소가 하나만 있고 초기 값이 제공되지 않은 경우, 축소는 콜백을 호출하지 않고 해당 단일 요소를 반환합니다.

예:
이 예제는 감소 방법을 사용하는 방법과 위치를 이해하는 데 도움이 됩니다. 궁금한 점은 댓글로 편하게 물어보세요.

쉬움:
Q. 주어진 배열의 요소를 합산합니다.

리듀스 방식을 이용한 솔루션

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

// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumofArray = arr.reduce(
  (result, element) => result + element,
  initialValue,
);

console.log(sumofArray);
// Expected output: 10

설명:
두 번째 인수로 0을 제공했으므로 처음에는 결과가 0이 됩니다. 그런 다음 각 요소에 대해 해당 요소를 결과에 추가하고 마지막으로 최종 결과 값이 반환됩니다.

매체:

이 예는 https://leetcode.com/problems/platten-deeply-nested-array/description/에서 가져온 것입니다.

Q. 다차원 배열 arr과 깊이 n이 주어지면 해당 배열의 평면화된 버전을 반환합니다.

다차원 배열은 정수 또는 기타 다차원 배열을 포함하는 재귀적 데이터 구조입니다.

평면화된 배열은 하위 배열의 일부 또는 전부를 제거하고 해당 하위 배열의 실제 요소로 대체한 배열 버전입니다. 이 병합 작업은 현재 중첩 깊이가 n보다 작은 경우에만 수행되어야 합니다. 첫 번째 배열의 요소 깊이는 0으로 간주됩니다.

Reduce 방법을 사용한 솔루션:

function flattenArray(arr, depth) {
    if(depth===0) return arr;
    return arr.reduce((result,element) => {
       if(Array.isArray(element)&&depth>0) {
          result.push(...flattenArray(element, depth-1));
       } else {
          result.push(element); 
       }
       return result;
   }, []);
}

설명:
깊이가 0이면 아무 것도 할 필요가 없습니다. 그렇지 않으면 재귀와 확산 연산자를 사용하여 결과에 요소를 추가합니다.

그렇습니다! Reduce 방법을 잘 배웠길 바랍니다.

참고자료 :
MDN의 Array.prototype.reduce()

위 내용은 JavaScript 배열 감소() 메서드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.