배열 내장함수 (reduce)

jiwonSong·2020년 7월 14일
0

javascript

목록 보기
20/23
post-thumbnail

이 문서는 fastcampus 강의 를 듣고 정리한 문서입니다. 문제가 있을 경우 이곳으로 문의주세요! 😀


reduce 함수는 배열이 주어졌을때, 배열의 원소를 모두 사용하여 어떠한 연산을 해야할 때 사용.

예를 들어 배열의 모든 원소의 합을 구할때,

const numbers = [1, 2, 3, 4, 5];

let sum = 0;
numbers.forEach(n => {
	sum += n;
});

console.log(sum); //15

이렇게 구하는 대신 reduce 함수를 사용하면,

const numbers = [1, 2, 3, 4, 5];

const sum = numbers.reduce((accumulator, current) => accumulator + current, 0);
console.log(sum); // 15

reduce 함수의 매개변수로 어떠한 연산을 할지 기술해주는 callback function과 초기값인 initialValue를 넣어줘야 한다.


callback function에서 입력으로 필요한 파라미터는

callback function: (previousValue, currentValue, currentIndex, array)이다.

previousValue : 이전까지 연산된 값(누적된 값)
currentValue : 현재 값(배열의 각 원소 값)
currentIndex : 현재 인덱스(reduce에서 각 원소에 대해서 실행이 될때, 해당 원소의 index)
array : 배열(reduce 함수를 실행하고 있는 자기 자신)
그리고 함수 바디 부분에 어떻게 연산할지를 기술해 줘야 한다.


그리고 initialValue는 연산의 기본 값이다.



또 다른 예로 reduce 함수를 이용하면, 배열의 원소들의 평균을 구할 수 있다.

const numbers = [1, 2, 3, 4, 5];

const avg = numbers.reduce((accumulator, current, index, array) => {
	if (index === array.length() -1) {
		return (accumulator + current) / array.length;  
	}
	return accumulator + current;
}, 0);
console.log(avg); // 3


reduce 함수를 수 계산이 아닌 다른데 이용하기

const alphabets = ['a', 'a', 'a', 'b', 'c', 'c', 'd', 'e'];

const counts = alphabets.reduce((acc, cur) => {
	if (acc[cur]) {
		acc[cur] += 1;
	}
	else {
		acc[cur] = 1;
	}
	return acc;
}, {});

console.log(counts); // {a:3, b:1, c:2, d:1, e:1};





profile
하루하루 성장하려 노력하는 FE 개발자 입니다~

0개의 댓글