본문 바로가기
개발/Javascript

[js] reduce 함수 사용법

by 코딩하는 갓디노 2024. 9. 5.

[js] reduce 함수 사용법

Reduce 메소드

reduce는 배열의 각 요소를 순차적으로 처리하며, 누적된 결과(acc)를 반환하는 고차 함수입니다.

 

1. 배열의 모든 요소 합 구하기

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

console.log(sum([1, 2, 3, 4]));  // 출력: 10


2. 배열의 최대값 찾기

const max = (array) => array.reduce((acc, curr) => (acc > curr ? acc : curr), -Infinity);

console.log(max([1, 5, 3, 9, 2]));  // 출력: 9

3. 배열의 중복된 요소 제거 (유일한 값만 반환)

const unique = (array) => array.reduce((acc, curr) => {
  if (!acc.includes(curr)) acc.push(curr);
  return acc;
}, []);

console.log(unique([1, 2, 2, 3, 4, 4, 5]));  // 출력: [1, 2, 3, 4, 5]

4. 배열을 객체로 변환하기 (요소를 키로 하고, 값은 해당 요소의 등장 횟수)

const countOccurrences = (array) => array.reduce((acc, curr) => {
  acc[curr] = (acc[curr] || 0) + 1;
  return acc;
}, {});

console.log(countOccurrences([1, 2, 2, 3, 3, 3]));  
// 출력: { '1': 1, '2': 2, '3': 3 }

5. 2차원 배열을 1차원 배열로 변환 (flattening)

const flatten = (array) => array.reduce((acc, curr) => acc.concat(curr), []);

console.log(flatten([[1, 2], [3, 4], [5]]));  // 출력: [1, 2, 3, 4, 5]

6. 문자열에서 각 문자 개수 세기

const charCount = (str) => str.split('').reduce((acc, curr) => {
  acc[curr] = (acc[curr] || 0) + 1;
  return acc;
}, {});

console.log(charCount("hello"));  
// 출력: { 'h': 1, 'e': 1, 'l': 2, 'o': 1 }

7. 배열의 평균값 구하기

const average = (array) => array.reduce((acc, curr, _, { length }) => acc + curr / length, 0);

console.log(average([1, 2, 3, 4, 5]));  // 출력: 3

8. 배열 요소 중 짝수와 홀수의 개수 구하기

const countEvenOdd = (array) => array.reduce((acc, curr) => {
  curr % 2 === 0 ? acc.even++ : acc.odd++;
  return acc;
}, { even: 0, odd: 0 });

console.log(countEvenOdd([1, 2, 3, 4, 5]));  // 출력: { even: 2, odd: 3 }

9. 두 배열의 교집합 구하기

const intersection = (arr1, arr2) => arr1.reduce((acc, curr) => {
  if (arr2.includes(curr)) acc.push(curr);
  return acc;
}, []);

console.log(intersection([1, 2, 3, 4], [3, 4, 5, 6]));  // 출력: [3, 4]

10. 배열 내 객체의 특정 속성 값 총합 구하기

const totalAge = (people) => people.reduce((acc, person) => acc + person.age, 0);

const people = [
  { name: "Alice", age: 25 },
  { name: "Bob", age: 30 },
  { name: "Charlie", age: 35 }
];

console.log(totalAge(people));  // 출력: 90

11. 1부터 100까지 총합 구하기

const sum = Array.from({length: 100}, (_, i) => i + 1 ).reduce((acc, cur) => acc + cur, 0)
//5050
반응형

댓글