method ) reduce method의 이해와 사용 예시

Javascript의 reduce method의 누산기를 통해 누적되는 값을 활용하는 문제를 해결할 수 있습니다. 배열을 순회하면서 동작 결과를 기록하고 판별한 값을 저장하면서 값을 바꾸거나 이용할 때 활용하면 좋습니다.

Try Code

1
2
3
4
5
6
7
8
const array1 = [1, 2, 3, 4];

// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue);

console.log(sumWithInitial);
// Expected output: 10

Explain

▫︎ Reduce Parameters

1
array.reduce(callbackFunction[, initialValue])

callbackFunction은 배열의 각 요소에 대해 실행할 함수를, initialValue는 callbackFunction의 최초 호출에서 첫 번째 인수에 제공하는 값을 작성합니다.

initialValue는 옵션 값으로 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용합니다.

▫︎ CallbackFunction Parameters

CallbackFunction은 4가지를 인수로 받습니다.

  • accumulator : 누산기로 콜백의 반환값을 누적
  • currentValue : 처리할 현재 요소
  • currentIndex : 처리할 현재 요소의 인덱스
  • array : reduce()를 호출한 배열

▪︎ Example of Apply 1

1
2
3
4
5
6
7
8
9
function solution(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
const sum = arr.reduce((acc, cur, idx) => (idx === i || idx === j ? acc : acc + cur));

if (sum === 100) return arr.filter((_, idx) => idx !== i && idx !== j);
}
}
}

▪︎ Example of Apply 2

1
2
3
function solution(day, arr) {
return arr.reduce((acc, cur) => (cur % 10 === day ? acc + 1 : acc), 0);
}

▪︎ Example of Apply 3

1
2
3
4
5
6
7
8
9
10
11
12
function solution(n, arr) {
const addNumber = (number) =>
String(number)
.split("")
.reduce((acc, cur) => acc + Number(cur), 0);

return arr.reduce((acc, cur) => {
if (addNumber(cur) > addNumber(acc)) return cur;
if (addNumber(cur) === addNumber(acc)) return cur >= acc ? cur : acc;
return acc;
}, 0);
}