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
반응형
'개발 > Javascript' 카테고리의 다른 글
[js] Set, Map의 비교, 예제 (0) | 2024.09.21 |
---|---|
[js] 수학 공식을 활용한 코딩테스트 예제 (1) | 2024.09.21 |
[코딩테스트] 최빈값, 빈도수 구하기주사위 (0) | 2024.09.05 |
[코딩테스트] 주사위 게임 문제 풀이 (빈도 계산) (0) | 2024.08.29 |
배열, 문자열의 접두사, 접미사 비교 (0) | 2024.08.28 |
댓글