Data transformation: reduce

Juyeon Lee·2022년 2월 22일
0
const movements = [200, 450, -400, 3000, -650, -130, 70, 1300];

const balance = movements.reduce(function (acc, cur, i, arr) {
  console.log(`Iteration ${i}: ${acc}`);
  return acc + cur;
}, 0);
console.log(balance);

reduce는 accumulator, current값, 인덱스값 그리고 Array이렇게
parameters에 적어준다...
이걸 loop로 적어주면 이렇게 된다.
아 그리고 콜백 function뿐만 아니라 시작값 포인트로 저렇게 0으로
적어준다,

for loop로 적어주면 아래와 같다.

let balance2 = 0;
for (const mov of movements) balance2 += mov;
console.log(balance2);

아까 위에 위에 코드를 간단하게 arrow function으로 표현하면
다음과 같다.

const balance = movements.reduce((acc, cur) => acc + cur, 0);
console.log(balance);

근데 arrow function에서 왜 i와 array가 빠진건지...
잘 모르겠다. 일단 넘어가고 다시 복습할때 이해해보려고 노력해야지..
다음으로 이 reduce method로 maximum value 구하는걸 배웠다.

const max = movements.reduce((acc, mov) => {
  if (acc > mov) return acc;
  else return mov;
}, movements[0]);
console.log(max);

여기서 mov가 current element인데 current element하고
다음 element를 비교해서 다른 값을 return해주는 식으로
작성했다. 처음 value값은 array에서 제일 첫번째 애부터
시작하니까 movements[0] 이걸 적어준거임...

0개의 댓글