JavaScript-reduce(배열에서 꼭 알아둬야 하는 메서드)

hannah·2023년 8월 1일
0

JavaScript

목록 보기
46/121
post-custom-banner

reduce

배열의 값들을 하나의 새로운 값으로 합치는 메서드

배열.reduce((누적값, 현재값)=>{
	return 새로운 누적값;
}, 초기값);

덧셈의 경우,

[1, 2, 3, 4].reduce((a, c) => (a+c) , 0)			//10

a는 누적값, c는 현재값이고 0은 초기값이라서 a(누적값)는 초기값이 된다.
참고로 초기값을 넣지 않으면 첫 번째 값이 초기값이 된다.

즉, a: 0, c: 1
a: 1, c: 2
a: 3, c: 3
a: 6, c: 4
값 10

이 값을 갯수대로 나누면 평균이 나오기 때문에

[1, 2, 3, 4].reduce((a, c) => (a+c) , 0)  / [1, 2, 3, 4].length		//2.5

위와 같이 평균을 구할 수 있다.
평균구하기


곱셈의 경우,

[1, 2, 3, 4].reduce((a, c) => (a*c) , 1)			//10

즉, a: 1, c: 1
a: 1, c: 2
a: 2, c: 3
a: 6, c: 4
값 24


최솟값 구하기 예제

let minValue = data.reduce((a, b) => Math.min(a,b));
console.log(minValue); //2

배열을 객체 리터럴로 바꾸기

.reduce((a, c, i) => {a[i] =c; return a}, { })
a는 누적값, c는 현재값 그리고 i는 인덱스이다.

코드의 마지막에 { }를 붙이면 배열식으로 값이 나온다.

['철수', '영희', '현영', '한솔'].reduce((a, c, i) => { a[i] = c; return a }, { })
// {0: '철수', 1: '영희', 2: '현영', 3:'한솔'}

즉, a: { }, c: '철수', i: 1
a: {0: '철수'}, c: '영희', i: 2
a: {0: '철수', 1: '영희', 2: '현영'}, c: '한솔', i: 3
값 a: {0: '철수', 1: '영희', 2: '현영', 3: '한솔'}

문제
다음 코드의 결과값을 구해보자

[1, 2, 3, 4, 5].reduce((a, c) => {
	a[c] = c*10;
    return a;
}, { });










정답

{1: 10, 2: 20, 3: 30, 4: 40, 5: 50}
post-custom-banner

0개의 댓글