배열 프로토타입 메서드 구현
개요
JavaScript의 배열 프로토타입 메서드들을 직접 구현해보면서 내부 동작 원리를 이해할 수 있습니다.
Map
map.js
//* Map
const map = function (arr, callback) {
const result = [];
for (let index = 0; index < arr.length; index++) {
result.push(callback(arr[index], index));
}
return result;
};
const arr = [1, 2, 3, 4, 5];
console.log(
map(arr, (item, index) => {
return `${index}: ${item * 2}`;
})
); // [ '0: 2', '1: 4', '2: 6', '3: 8', '4: 10' ]
Reduce
reduce.js
//* Reduce
const reduce = function (arr, callback, initialValue) {
let result = initialValue;
for (let index = 0; index < arr.length; index++) {
result = callback(result, arr[index], index);
}
return result;
};
['a', 'b', 'c'].reduce((acc, cur, index) => {
acc[cur] = index;
return acc;
}, {});
console.log(
reduce(
['a', 'b', 'c'],
(acc, cur, index) => {
acc[cur] = index;
return acc;
},
{}
)
); // { a: 0, b: 1, c: 2 }
핵심 포인트
배열 프로토타입 메서드를 직접 구현해보면 내부적으로 어떻게 동작하는지 깊이 이해할 수 있습니다.