-
2023 - 05 - 21 자료구조 map과 set, 매서드, 반복자Today I Learned/TIL 05 2023. 6. 1. 07:22
오늘 할일
자바스크립트 2강 듣기
오늘 배운것
자료구조 (map , set) : map과set은 고유한 값을 저장하는 자료구조이다.
map과 set는 기존의 배열(array)나 객체(object)보다 훨씬 더 효율적이다.
1. Map
key-value pair로 이뤄지므로 객체와 같음. 하지만! 객체는 key에 문자열 형태인 반면,Map은 key값 자리에 어떤 유형의 데이터 타입도 다 들어올 수 있다.
왜냐하면 Map은 key가 정렬된 순서로 저장되기 때문이다.
검색, 삭제, 제거(완전한 제거), 여부확인 기능 제공
Map에서 key-value pair를 넣는 방식은 객체와는 다르다. 아래와 같이 넣는다.const myMap = new Map(); myMap.set('key', 'value'); -> 할당하기(set) . . myMap.get('key') -> 찾기(get), key값만 입력한다. console.log(myMap.get('key')); //'value'값 출력. //set으로 key-value 설정을 하고, get으로 key로 검색을 한다. set과 get은 항상 pair다.
new Map(); // 새로운 맵을 생성. map.set(key, value) // key값을 이용해 value 저장. map.get(key) // key에 해당하는 value값을 반환함. key가 없으면 undefined 나옴. map.has(key) // key가 존재하면 true, 존재하지 않으면 false (불리언타입) map.delete(key) // key에 해당하는 value값을 삭제함. map.clear() // 맵 안의 모든 요소를 제거함. map.size // 맵 안의 요소의 개수를 반환함.
Map을 쓰는 이유는, 대량 데이터를 처리하기 위함이기 때문에 반복적을하는 부분이중요함.for - of 반복문을 돌림으로써 하나하나 쓸수 있게 해줌. (마치 forEach문 같음)
For ... of 반복문 (반복자) iterator
Map에서 반복을 말할때 iterator 개념이 중요함. (for - of 방식) :반복을 위한 메소드 -> keys(), values(), entries()
for (const 단수(key 또는 value 또는 entry) of 복수(keys 또는 values 또는 entries 또는 함수() ));
단순 배열 var iterable = [10, 20, 30]; for (var value of iterable){ console.log(value); } // 10 20 30
const myMap = new Map(); myMap.set('one', 1); myMap.set('two', 2); myMap.set('three', 3); for (const key of myMap.keys()){ console.log(key); } for (const value of myMap.values()){ console.log(value); } for (const entry of myMap.entries()){ console.log(entry); } for (const entry of myMap.entries()){ console.log(`${entry[0]} : ${entry[1]}`); } console.log(myMap.size); // 3 (요소가 3개이므로) console.log(myMap.has('two')) // true (해당요소를 포함함) // one two three // 1 2 3 // [ 'one', 1 ] [ 'two', 2 ] [ 'three', 3 ] // one : 1 two : 2 three : 3 // entry[0]는 배열의 첫번째 요소인데 객체에서는 key값, // entry[1]는 배열의 두번째 요소인데 객체에서는 value값.
2. Set1. set은 고유한 값을 저장하는 자료구조이다.
2. set은 "value 값"만 저장하고, key를 저장하지 않는다.
3. set은 값이 중복되지 않는 유일한 요소로만 구성된다.
4. 값 추가, 값 검색, 값 삭제, 모든 값 제거, 존재 여부 확인등을 하는 기능을 한다.
Map은 key-value였던 반면, set은 value만 넣는다. (key는 저장하지 않는다.)
Map에서는 keys, values, entries 모두 출력 가능한 반면, set은 value값만 넣기 때문에 values만 출력 가능하다.const mySet = new Set(); mySet.add('value1'); mySet.add('value2'); console.log(mySet.size); // 2. set의 사이즈(길이) = 2개
const mySet = new Set(); mySet.add('value1'); mySet.add('value2'); mySet.add('value2'); console.log(mySet.size); // 2. // set의 사이즈(길이) = 2개. (값이 3개 있지만, value2는 중복된다. // set에서는 중복되지 않는 유일한 요소들만 카운트하므로 중복되는 것은 무시한다.)
const mySet = new Set(); mySet.add('value1'); mySet.add('value2'); mySet.add('value2'); console.log(mySet.has['value1']); // true console.log(mySet.has['value2']); // ture console.log(mySet.has['value3']); // false (value3은 없음)
const mySet = new Set(); mySet.add('value1'); mySet.add('value2'); mySet.add('value3'); mySet.add('value5'); mySet.add('value8'); for (const value of mySet.values()) { console.log(value); } // value1, value2, value3, value5, value8
'Today I Learned > TIL 05' 카테고리의 다른 글
2023 - 05 - 24 콜백함수 및 콜백함수의 제어권 (0) 2023.06.01 2023 - 05 - 22 REST API (0) 2023.06.01 2023 - 05 - 20 일급객체로써의 함수(콜백함수, 고차함수) (0) 2023.06.01 2023 - 05 - 19 구조분해할당, ES6 , 단축 속성명, 전개구문 (스프레드 오퍼레이터), 나머지 매개변수 (레스트 파라미터), 템플릿 리터럴 (백틱) (0) 2023.06.01 2023 - 05 - 18 반복문 (for문, for~in문, while문, do while문, break문, continue문) (0) 2023.06.01