map 함수 역시 앞서 살펴본 each와 비슷하지만, 활용 방식이 약간 다른 함수입니다. 배열에 주로 사용되며, 배열의 요소 각각을 꺼내 사용자가 정의한 함수에 적용한 후, 새로운 값을 얻은 다음 그 결과 값을 새로운 배열에 넣는 형태로 동작하게 됩니다. 한 번 예제를 살펴보도록 하겠습니다.
Array.prototype.map = function(callback) {
var obj = this;
var value;
var mapped_value;
var A = new Array(obj.length);
for(var i = 0; i < obj.length; i++) {
value = obj[i];
mapped_value = callback.call(null, value);
A[i] = mapped_value;
}
return A;
};
var arr = [10, 11, 12];
var result = arr.map(function(value) {
return value * value;
});
console.log(result);
해당 함수 실행에 있어서는 map을 실행하는 객체가 배열인지 여부와 callback이 함수인지 여부를 사전에 확인해야 합니다. 우선 배열 obj와 같은 크기의 배열 객체 A를 선언해 주고, 이후 for문이 실행됩니다. 원본 배열 obj의 요소 하나씩을 value에 넣어 callback에 인자로 전달해 실행하고 - 그 결과 값을 새로운 배열 A의 요소로 하나씩 대입하게 되죠. 그리고 그 결과 배열 격체 A를 리턴하는 간단한 형태로 실행됩니다.
'Programming > Javascript' 카테고리의 다른 글
15. Javascript 함수형 프로그래밍 적용(6) - reduce (0) | 2023.02.17 |
---|---|
15. Javascript 함수형 프로그래밍 적용(4) - each (0) | 2023.02.15 |
15. Javascript 함수형 프로그래밍 적용(3) - wrapper (0) | 2023.02.13 |
15. Javascript 함수형 프로그래밍 적용(2) - bind (0) | 2023.02.10 |
15. Javascript 함수형 프로그래밍 적용(1) - 필수 선행지식 + 커링(curry) 3 (0) | 2023.02.09 |