본문 바로가기

JS

map 작동원리

        a = [10, 11, 12, 13, 14, 15];
        let answer=a.map(function (v, i) {
            return v*v;
        }, [1, 2]);
        console.log(answer);

먼저 map 코드는 이렇게 작성해봤다.

map은 요소들을 하나하나 탐색하면서 그 요소들을 이용해서

새로운 배열을 생성하는 것이다.

 

 

        function map(predicate, thisArg){
          let list=[];
          for(let i=0; i<a.length; i++;){
                list.push(predicate(a[i], i));
            }
            return list;
        }

정확하게 이렇다는건 아니지만,

이런식으로 map이 작동하는 원리를 작성해 놓은 코드이다.

 

빈 배열을 만들고,

for문이 돌면서 원본 배열을 하나하나 탐색을 한다.

그러면서 똑같이 predicate 콜백함수를 받아서 원본배열의 값과 인덱스를 넘겨준다.

그 생성된 새로운 배열을 리턴해주는 것.

이게 map의 원리이다.

(실제 map의 내부는 아니고 뇌피셜로 이해하면 좋다.)

 

 

이런 원리로, 출력값은

v*v를 하니까 10*10, 11*11...

이런식의 값들이 새로운 배열로 출력이 된다.

 

 

이런 출력값을 볼 수 있다.

 

 

        a = [10, 11, 12, 13, 14, 15];
        let answer=a.map(function (v, i) {
            if(v%2==0) return v; 
        }, [1, 2]);
        console.log(answer);

v*v대신 if문을 사용해서

짝수만 출력하는 값을 만들었을때

실제로 consol창을 보면

이런식으로 출력이 된다.

(undefined 😵)

 

map은 원본배열을 탐색하면서

새로운 배열을 생성하는데,

새로운 배열은 항상 원본배열과 길이가 동일하기때문이다.

 

 

'JS' 카테고리의 다른 글

reduce 작동원리  (0) 2021.08.29
filter 작동원리  (0) 2021.08.29
forEach 작동원리  (0) 2021.08.24
setInterval API  (0) 2021.05.21
퍼포먼스 개발 툴 사용하기🧨  (0) 2021.05.17