MDN에 나와 있는 map() 예제 작동 방법 공부하기 .. (1)

2021. 6. 30. 19:50JS/알고리즘

map()은 배열의 값을 이용해 수식을 진행하고 새 배열을 만듭니다.  그래서 특징 중에서

1. 기존의 배열에는 영향을 주지 않는다

2. map가 호출이 시작된 이후로 배열에 추가된 요소는  callbackFn에 의해 방문하지 않는다.

3. map호출 후 삭제된 요소는 방문하지 않는다. 

라고 하는군요.  

numbers를 map()으로 호출하여 새로운 arr를 생성 

1. num에 1이 들어오고 Math.sqrt(num)으로 1의 제곱근 1을 반환함 

2. num에 4이 들어오고 Math.sqrt(num)으로 4의 제곱근 2를 반환함 

3. num에 9이 들어오고 Math.sqrt(num)으로 9의 제곱근 3을 반환함 

4. return[1 ,2 ,3] 이 roots의 배열이 됨. numbers 배열에 영향 없음. 

(참고) Math.sqrt()는 함수는 숫자의 제곱근을 반환합니다. 그런데 숫자가 음수면 NaN을 반환합니다. 

Math.sqrt()는 Math의 정적 방법이기 때문에 항상 Math.sqrt()로 사용해야 한다고 합니다. 

kvArray를 map호출하여 새로운 arr를 생성

obj값은 {key: 1, value: 10} 변수 rObj를 생성 {}를 할당한다. rObj[obj.key]에 obj.value의 값을 할당한다. 그러면 rObj의 값은 [{'1':10}] 할당된다..... 반복....

그렇게 최종적인 return 값은 [{'1':10},{'2':20},{'3':30}] 된다. 

map이라는 변수에 map의 기능을 하도록 초기화 하고 let a변수에 map과 call을 사용해 새로운 바이트 배열 arr를 만듭니다. 

function(x)의 값으로 x값은 H가 되고 x.charCodeAt()으로 H.charCodeAt() 되므로 72 단위를 반환합니다. 

이렇게 쭉... 이어오다.. 최종적인 'Hello World'의 UTF-16 코드 단위는 [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]입니다. 

*charCodeAt()지정된 인덱스에서 UTF-16 코드 단위를 나타내는 0하고 65535 사이의 정수를 반환합니다. _출처 MDN 

*call() 메소드는 주어진 this 값과 인수를 개별적으로 제공하는 함수를 호출합니다. _출처 MDN