
reduce는 기존 배열을 변형하지 않고, 최종 값을 반환함. array.reduce(callback, initialValue)
accumulator: 이전 콜백 실행의 반환 값 또는 initialValue.currentValue: 현재 처리 중인 배열의 요소.currentIndex: 현재 요소의 인덱스 (선택적).array: reduce를 호출한 원본 배열 (선택적).accumulator의 초기 값. 생략 시 배열의 첫 번째 요소가 초기 값으로 사용됨.배열의 합계 계산:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // 15
accumulator는 처음에 0으로 설정됨.초기 값을 생략한 경우
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
});
console.log(sum); // 15
1)가 accumulator로 설정되고, 순회는 두 번째 요소부터 시작const nestedArray = [[1, 2], [3, 4], [5]];
const flatArray = nestedArray.reduce((acc, curr) => acc.concat(curr), []);
console.log(flatArray); // [1, 2, 3, 4, 5]
const fruits = ["Apple", "Banana", "Apple", "Orange", "Banana"];
const fruitCount = fruits.reduce((acc, fruit) => {
acc[fruit] = (acc[fruit] || 0) + 1; // 각 과일의 개수를 누적
return acc;
}, {});
console.log(fruitCount);
// { Apple: 2, Banana: 2, Orange: 1 }
const fruits = ["Apple", "Banana", "Apple", "Orange", "Banana"];
const fruitCount = fruits.reduce((acc, fruit) => {
acc[fruit] = (acc[fruit] || 0) + 1; // 각 과일의 개수를 누적
return acc;
}, {});
console.log(fruitCount);
// { Apple: 2, Banana: 2, Orange: 1 }
const urls = ["url1", "url2", "url3"];
const fetchUrlsSequentially = urls.reduce((promise, url) => {
return promise
.then(() => fetch(url))
.then((res) => res.json())
.then((data) => results.push(data));
}, Promise.resolve());
fetchUrlsSequentially.then(() => console.log("All done!"));