배열.reduce((누적값,현재값) => return 결과 , 초기값);
여기서 초기값은 누적값에 처음 대입하는 값을 의미한다.
const numbers = [1, 2, 3, 4, 5];
// let sum = 0;
// numbers.forEach(n=>{
// sum == n;
// })
// console.log(sum);
//위의 주석 코드를 reduce()를 이용하여 구현하면 다음과 같다
// 초기값은 0
const sum = numbers.reduce((accumulator,current) => accumulator + current, 0);
console.log(sum);
배열.reduce((누적값,현재값,인덱스,배열) => return 결과 , 초기값);
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, current, index, array) => {
//array.length 하면 5이고 이는 끝 인덱스 값보다 +1 차이가 나므로 -1 해준다
if (index === array.length - 1){
return (accumulator + current ) / array.length;
}
return accumulator + current;
}, 0);
console.log(sum);
const alphabets = ["a", "a", "a", "b", "c", "c", "d", "e"];
const counts = alphabets.reduce((acc, current) => {
if (acc[current]) {
acc[current] += 1;
} else {
acc[current] = 1;
}
return acc;
}, {});
console.log(counts);
acc에 초기값인 {} 비어있는 객체가 대입됨,
이때 a가 없으니 else 조건문대로 acc["a"] : 1이 됨
그 다음 루프에서 acc["a"] : 1 이므로 acc["a"] += 1처리되어
acc["a"] : 2 가 됨
그런식으로 alphates의 각 요소의 개수만큼 루프를 돌음
결과는
{a: 3, b: 1, c: 2, d: 1, e: 1}
벨로퍼트님의 자바스크립트 강의를 듣고 작성하였습니다.
728x90
반응형
'Language > JavaScript' 카테고리의 다른 글
window.history.pushState / window.history.replaceState (0) | 2022.11.02 |
---|---|
자바스크립트 - 클래스의 활용 (0) | 2021.04.17 |
자바스크립트 join함수 (0) | 2021.04.17 |
자바스크립트 concat함수 (0) | 2021.04.17 |
자바스크립트-shift,pop,unshift,push함수 (0) | 2021.04.16 |