해결된 질문
작성
·
38
0
안녕하세요 배열관련 알고리즘 문제를 풀다가 다른 사람들이 풀어놓은 정답이 이해가 가지 않아서 몇 글자 적어봅니다.
배열의 데이터 값의 두배인 배열을 만들라는 내용의 알고리즘 이였습니다!
블로그에서 찾아보려고 해도 다들 복붙은 해놨는데 설명이 없더라구요. 제가 이해가 안되는 부분이
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)
은 기존 배열 a
에 b*2
를 추가하는 방법을 사용하여 같은 결과를 얻습니다.
추가로, 화살표 함수의 [...a, b*2]
는 스프레드 연산자를 활용하여 기존 배열 a
에 b*2
를 추가한 새로운 배열을 반환하는 방식이기 때문에 가능합니다.
이미지 URL: 이동
의문사항이 있으시면 언제든지 문의해 주세요!