내일배움캠프: Node.js_4기
18일차 TIL
~오늘의 수강 과목~
1. JavaScript 문법 종합반 2주차 (최원장 튜터님)
_ Map, Set
모던 자바스크립트 핵심 가이드(알베르토 몬탈레시) 서적도 추가로 참고
Map과 Set은 ES6 문법에서 새로 생긴 자료구조
데이터의 구성, 검색, 사용을 기존의 객체, 배열보다 효율적으로 처리하기 위함
Map
key : value
key가 정렬된 순서로 저장되기 때문에 key에 어떤 데이터 타입도 전부 들어올 수 있음
검색, 삭제, (완전한)제거 여부 확인
const myMap = new Map();
Map을 새롭게 생성
이제 Object(key: value)처럼 map에 값을 넣어 줄 차례
mayMap.set('key', 'value')
myMap.get('key')
Map에는 항상 set을 이용하여 데이터를 넣어줘야 함
set으로 넣어준 값은 get을 통해 검색이 가능
(get과 set은 항상 페어)
값을 셋팅하다 / 값을 겟해오다 <<이렇게 외우기
Map은 보통 대량 데이터를 처리하려고 사용하기 때문에, 반복적인 부분이 중요
이터레이터(iterator)라는 반복자를 가지고 있으면 값을 하나하나 순회하며 체크가 가능
이터레이터는 요소 하나하나를 반복할 . 수있도록 배열 또는 객체와 비슷한 형태로 열거되어 있는 자료구조!
반복을 위해 Map에서 사용하는 메서드
keys() : key로 이루어진 이터레이터들이 나옴 (= 반환하는 값이 이터레이터)
values() : value로 이루어진 이터레이터들이 나옴
entries() : key와 value로 이루어진 이터레이터들이 나옴
이렇게 뽑은 값을 for of 혹은 forEach로 반복문을 돌릴 수 있는 것이 map의 장점
const myMap = new Map();
myMap.set('one', 1);
myMap.set('two', 2);
myMap.set('three', 3);
console.log(myMap.keys());
// [Map Iterator] {'one', 'two', 'three'}
여기에서 콘솔에 출력된 부분이 이터레이터
for (const key of myMap.keys()) {
console.log(key);
}
// 출력 결과
// one
// two
// three
for of 메서드로 myMap의 key를 하나하나 돌려가며 순회 후 출력
(여기서 key는 of의 뒷부분에서 하나하나 돌아가며 배정)
추후 이렇게 출력 뿐만 아니라 필터링, 값의 입력 등 여러 방면으로 활용 가능
keys가 아닌 values로 돌려도 마찬가지!
console.log(myMap.entries());
// 출력 결과
// [Map Iterator] { ['one', 1], ['two', 2], ['three', 3] }
entries로 예제로 살펴보기
entries는 출력 시 [묶인 배열]이 {이터레이터}를 통해 담겨서 나옴
for (const entry of myMap.entries() {
console.log(entry);
}
// 출력 결과
// [ 'one', 1 ]
// [ 'two', 2 ]
// [ 'three', 3 ]
그 외
console.log(myMap.size); // map의 사이즈(길이)
console.log(myMap.has.("two1")); // key 기반 검색(특정 key가 존재하는지 검색. 이런 key를 가지고 있는 value가 있는지)
// 출력 결과
// 3
// false
Set
중복되지 않는(=유일한) 고유한 값을 저장하는 자료구조
Map과 다르게 value만 저장 (key X)
const mySet = new Set();
새로운 Set 생성
mySet.add(‘value1’);
mySet.add(‘value2’);
mySet.add(‘value2’); // 여기 주목. 3이 아니라 2임
console.log(mySet.size); // 2 출력. 똑같은 값을 추가하면 중복된 값으로 인식하기 때문
Map과 다른 점
- 값은 set이 아닌 add로 추가
- key가 없으므로 value만 넣음
- 유일한 값만 있어야 하기 때문에 value 중 중복되는 값이 있으면 합쳐짐
console.log(mySet.has(‘value1’); // true
console.log(mySet.has(‘value2’); // true
console.log(mySet.has(‘value3’); // false
이제 이터레이터로 반환해보기
for (const value of mySet.values() {
console.log(value);
}
// 출력 결과
// value1
// value2
Map과 달리 for of에서 key, value, entry 같은 선택지가 없고 무조건 value만 가능
오늘의 메모
- 개인과제 시작하고 바로 팀 과제로 넘어가느라 집중력도 떨어지고 강의를 들어도 들은 것 같지가 않았다. 오늘은 노드로 넘어가는 날이고 부랴부랴 복습 아닌 복습(이유: 분명 강의를 들었는데도 초면같음) 중이다ㅠㅠ
- 그래도 과제에서 코드에 먼저 몸통박치기 하고 난 이후에 개념을 다시보니 확실히 알것같은 기분이다.
- 오늘 분량도 강의 들을 당시에는 흠? 스러웠는데 과제에서 forEach를 사용한 후에 다시 들어보니 감이 잡힌다.
- 원래 내배캠 시작한 이후로 늘 주말은 비워두고 있긴 한데 새로 받은 노드 강의 슥 훑어보니 내 페이스로는 평일은 물론이고 주말에 하루종일 들어도 뭔가 모자랄것같다🙄
내일의 목표
- 노드 기초 강의 시작하기
앞으로의 목표
- 노드 수업 잘 적응하기
- 노드 숙련주차 전까지 js 기초도 열심히 보기
'⌨️ > JavaScript' 카테고리의 다른 글
[JavaScript] (3) | 2024.01.18 |
---|---|
[JavaScript] 일급 객체(First-class Object) 함수 (0) | 2024.01.05 |
[JavaScript] ES6 신문법 (1) | 2024.01.04 |
[JavaScript] sort() 메서드 (1) | 2024.01.03 |
[JavaScript] 함수, 조건문 (0) | 2024.01.02 |