Array.prototype.reduce와 비슷한 동작을 하는 함수를 구현해 보려고 한다.
const reduce = (arr, callback, initValue) => {
let result = initValue === undefined ? arr[0] : initValue;
for (let i = initValue === undefined ? 1 : 0; i < arr.length; i += 1) {
result = callback(result, arr[i]);
}
return result;
};
console.log(reduce([1, 2, 3], (a, b) => a + b, 0)); // 6
console.log(reduce([1, 2, 3, 4, 5], (a, b) => a + b)); // 15
console.log(reduce([1, 2, 3, 4, 5], (a, b) => a * b, 1)); // 120
console.log(reduce([2, 2, 2], (a, b) => a * b)); // 8
console.log(reduce([3, 3, 3], (a, b) => a * b, 0)); // 0
📌 함수 설명