map 4

Map

Map은 Set과 함께 new 연산자를 통해 생성 할 수 있다. 초기에 배열로 감싸서 다수의 인자를 전달 할 수 있으며, [key, value]를 세트로 전달 해야 한다. Map.prototype.methods ⚪ set() 데이터를 추가 하는 함수이다. Set에서는 add를 사용하지만 Map에서는 set을 사용한다. 인자를 key, value로 전달 하는데, key만을 전달 할 경우 value는 undefined인 상태로 담긴다. set이 된 결과를 반환하기 떄문에 메서드 체이닝이 가능하다. 즉슨, 참조형 데이터 이기 때문에(Map 자체가 object) 변경하면 원본도 함께 변경된다. ⚪ get() Map에 해당 key가 있는 여부에 대해 불리언으로 반환한다. Set에는 has가 사용되지만 Map에는 ..

TIL/JS 2023.03.28

배열의 고차함수 메서드

배열에는 prototype method가 있다. 그런데 그 중에서도, 콜백 함수를 인자로 받아 특정한 알고리즘을 거쳐주는 메서드가 있는데, 이를 함수에서 배운 고차함수 메서드 라고 한다. 배열의 고차함수는 일반 함수에서의 고차함수는 차이점이 있다. 본래 함수에서 고차함수에 콜백함수가 전달 될 때는 콜백 함수를 호출 해야 return이 된다. 하지만, 배열의 고차함수는 내부적으로 알아서 호출하고, 요소에 접근해서 return까지 해준다. 이러한 편리함 측면에서, 일회성 기능을 수행 할 때는 함수보타 고차함수를 사용한다. 💡고차 함수는 보통 3개의 인자를 받는다. (itm, idx, arr) itm은 배열의 요소이며, idx는 인덱스, arr는 실제 참조하고 있는 배열이다. 따라서, arr를 이용 할 경우 ..

TIL/JS 2023.03.24

new Map 다수의 key, value 초기화

Map은 key와 value를 받아 object로서 생성 한다는 특징이 있다. 이전에 공부했을 때, Map은 배열로서 묶음으로 전달함으로써 여러개의 값을 할당 할 수 있다는 것을 알았다. 그런데 생성 한 후에 set을 통해 다수의 key와 value로 할당 하였는데 생각과 다르게 할당이 되었다. 그래서 초기화 했을 때와 할당 했을 때 코드를 작성해 본 결과, 이유를 알게 되었다. Set과 Map은 초기화 할 때만 []를 배열로 인식 하지 않고, 다수의 값으로 받아 들인다는 것이다. 그래서 new Map(['x', 1], ['y', 2]) 로 작성했다. 그런데 결과는 ['x', 1] 을 키로 인식하고, ['y', 2]를 value로 인식했다. Map은 두개의 인자를 받고, key와 value로 인식하기 때..

TIL/JS 2023.03.20

object와 Map에서 참조형 데이터를 key로 지정하기

객체에서 참조형 데이터를 키값으로 지정 하기 참조형 데이터를 상수에 넣고 객체에서 키값을 지정하기 위해서는, 대괄호를 써 줘야한다. 이유는 대괄호를 쓰지 않으면 key를 string자체로 인식을 하기 때문이다. 하지만, key로 설정 했을 경우, obj는 지정한 상수가 아닌 다른 이름을 가지게 되고, 배열 또한 다르게 된다. 그래서 객체안에서는 참조형 데이터를 key값으로 지정하지 않는다. 지정은 되지만, 보여지는 이름이 다르기 때문에, 어느 데이터인지 파악하기도 어렵고, 일일이 기억하기 어렵기 때문이다. obj내에서 obj를 key로 지정 했을 경우 [object Objet] 의 이름을 갖게된다. 반대로 Map은 중복되지 않은 데이터를 담는 object이며, 참조형 데이터를 key값으로 주어도 똑같이 ..

TIL/JS 2023.03.20