티스토리 뷰

Backend/Typescript & Angular

배열 내장함수 reduce

개발하는 후딘 2021. 9. 6. 23:48
728x90
반응형

reduce

- 배열의 모든원소를 활용하여 한줄로 연산이 가능하다.

- 한꺼번에 처리할 수 있어서 매우 유용한 연산자다. 알면좋다.

 

reduce 예제 1  - sum 연산으로 forEach문과 비교

forEach 반복문을 사용했을 때

console.clear();

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

let sum = 0;

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

console.log(sum); // 15

 

 

reduce를 사용했을 때

- 아주 간단하다 3줄이 한줄로 줄여진다.

- arrayName.reduce( (누적값, 현재값) =>  내부연산 ,  초기 누적값 ); 으로 구성되어 있다.

  • acc는 accumulator의 약자로, 누적값을 의미한다.
  • curr은 current의 약자로, 현재 배열의 원소 값을 의미한다.
  • 인덱스 0부터 반복이 시작된다.
console.clear();

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

const sum = numbers.reduce( (acc,curr) => acc + curr , 0 );

console.log(sum); // 15

 

 

reduce 예제 2 - 평균 구하기

- 사용배열.reduce( (누적값, 현재값, 현재인덱스,  사용배열) =>  내부연산 ,  초기 누적값 ); 으로 구성되어 있다.

- 무조건 누적값을 리턴해야한다. 그래야 다음 누적계산을 할 때 리턴한 누적값이 사용되기 때문이다.

console.clear();

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

const avg = numbers.reduce((acc, current, index, array) => {
  if (index === numbers.length - 1) {
    return (acc + current) / array.length;
  }

  return acc + current;
}, 0);

console.log(avg); // 3

 

 

reduce 예제 3 - 중복되는 문자 카운트 하기

- 초기 acc를  0이 아닌 비어있는 객체로 하였다.

console.clear();

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

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

console.log(countsAlphabet);

 

 

 

 

728x90
반응형

'Backend > Typescript & Angular' 카테고리의 다른 글

삼항연산자  (0) 2021.09.26
프로토타입과 클래스  (0) 2021.09.09
shift/unshift & push/pop & concat & join  (0) 2021.08.28
splice & slice  (0) 2021.08.27
배열 내장함수 - forEach/ map/indexOf/find/findIndex  (1) 2021.08.25
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함