강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

예진안님의 프로필 이미지
예진안

작성한 질문수

자바스크립트의 reduce 함수 사용할 때 배열 문제

해결된 질문

작성

·

38

0

안녕하세요 배열관련 알고리즘 문제를 풀다가 다른 사람들이 풀어놓은 정답이 이해가 가지 않아서 몇 글자 적어봅니다.

배열의 데이터 값의 두배인 배열을 만들라는 내용의 알고리즘 이였습니다!

image.png

블로그에서 찾아보려고 해도 다들 복붙은 해놨는데 설명이 없더라구요. 제가 이해가 안되는 부분이

function solution(numbers) {

   return numbers.reduce((a,b)=>[...a,b*2],[])

}

어떻게 화살표 함수 안에 [...a,b*2]이런 식이 들어갈 수있는지 궁금하고, 일반함수로 표현하면 어떻게 표현하는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

예진안 님께서 질문하신 자바스크립트의 reduce 함수에 관한 이해가 도움이 필요하신 것 같아 설명드리겠습니다.

먼저, reduce 함수는 배열의 각 요소에 대해서 특정 작업을 수행하며 이를 누적하여 하나의 결과값을 반환하는 함수입니다.

reduce 함수는 두 개의 인자를 받습니다:
1. 누적값 (accumulator, a)과 현재 처리중인 배열의 요소 (currentValue, b).
2. 초기값 (initialValue)로 설정된 빈 배열 []가 사용됩니다.

질문하신 코드:

function solution(numbers) {
   return numbers.reduce((a, b) => [...a, b * 2], [])
}

이 코드는 다음과 같은 방식으로 동작합니다:
1. a는 누적 배열로서, 초기값으로 빈 배열 []이 주어집니다.
2. b는 배열 numbers의 현재 요소입니다.
3. [...a, b*2]는 현재 누적 배열 a에 새로운 요소 b*2을 추가하는 새 배열을 반환합니다.

일반 함수로 표현하면 다음과 같이 할 수 있습니다:

function solution(numbers) {
   return numbers.reduce(function(a, b) {
      return a.concat(b * 2);
   }, []);
}

여기서 a.concat(b * 2)은 기존 배열 ab*2를 추가하는 방법을 사용하여 같은 결과를 얻습니다.

추가로, 화살표 함수의 [...a, b*2]는 스프레드 연산자를 활용하여 기존 배열 ab*2를 추가한 새로운 배열을 반환하는 방식이기 때문에 가능합니다.

이미지 URL: 이동

의문사항이 있으시면 언제든지 문의해 주세요!

예진안님의 프로필 이미지
예진안

작성한 질문수

질문하기