[JavaScript] 자바스크립트에서 맵(Map)과 키(Key) 사용하기
2022. 8. 9. 13:19ㆍProgram/JavaScript
271_자바스크립트에서 맵(Map)과 키(Key) 사용하기
[적용]
- 키와 값을 세트로 사용하고 싶을 때
- 연관 배열을 사용하고 싶을 때
[문법 1]
메소드 | 의미 | 반환 |
new.Map(반복가능한객체*) | 맵 객체 초기화 | 객체(Map) |
맵.set(키, 값) | 맵에 키와 값의 세트를 등록 | 객체(Map) |
맵.get(키) | 키를 지정해 값을 가져오기 | 값 |
맵.has(키) | 키의 값 존재 여부 확인 | 진리값 |
맵.delete(키) | 키의 값 삭제 | 진리값(삭제 여부) |
맵.clear() | 키와 값 모두 삭제 | 없음 |
맵.keys() | 키의 반복자 객체 | 객체(Iterator) |
맵.values() | 값의 반복자 객체 | 객체(Iterator) |
맵.entries() | 키와 값 배열의 반복자 객체 반환 | 객체(Iterator) |
맵.forEach(콜백)_ | 각 세트에 대한 처리 실행 | 없음 |
* 생략 가능
[문법 2]
속성 | 의미 | 타입 |
맵.size | 키와 값 세트의 수 | 숫자 |
[문법 3]
속성 | 의미 |
(키, 값) => {} | 키와 값을 가져와 처리 |
[내용]
Map 객체는 키와 값을 세트로 사용하여 다양한 데이터를 다룬다.
Object도 키를 사용해 데이터를 다루지만, Map은 키와 값을 세트로 다루는 기능에 조금 더 특화되어 있다.
다른 프로그래밍 언어의 연관 배열(Associative Array)이나 딕셔너리(Dictionary)와 같은 기능이다.
Map은 set()과 get()을 사용해 값을 지정하거나 불러올 수 있으며, has()를 사용해 값의 존재 여부를 확인할 수 있다.
JavaScript
// 맵 초기화
const memberList = new Map();
// 맵에 값 설정
memberList.set(20, '사자');
memberList.set(50, '호랑이');
memberList.set(120, '사슴');
// 다음과 같이 기술 가능
// memberList.set(20, '사자').set(50, '호랑이').set(120, '사슴');
// 맵에서 값 가져오기
console.log(memberList.get(20)); // 결과: '사자'
// 맵 존재 여부 확인
console.log(memberList.has(50)); // 결과: true
같은 키를 사용하면 덮어쓰기가 가능하다.
JavaScript
const memberList = new Map();
memberList.set(20, '사자');
memberList.set(20, '호랑이');
console.log(memberList.get(20)); // 결과: '호랑이'
[[키1, 값1], [키2, 값2]]의 형태로 초기화를 지정할 수 있다.
JavaScript
// 맵 초기화
const memberList = new Map([[20, '사자'], [50, '호랑이'], [120, '사슴']]);
console.log(memberList.get(50)); // 결과: '호랑이'
키는 문자열, 숫자, 심볼 등의 타입을 사용할 수 있다.
심볼을 키로 지정하면 유일한 키 값을 가지는 세트의 생성이 가능하다.
JavaScript
const myMap1 = new Map();
myMap1.set(10, '사자');
console.log(myMap1.get(10)); // 결과: '사자'
const myMap2 = new Map();
myMap2.set('f1234_56', '호랑이');
console.log(myMap2.get('f1234_56')); // 결과: '호랑이'
const myMap3 = new Map();
const keySymbol = Symbol();
myMap3.set(keySymbol, '사슴');
console.log(myMap3.get(keySymbol)); // 결과: '사슴'
size 속성으로 세트의 수를 확인할 수 있다.
JavaScript
// 앱 초기화
const memberList2 = new Map();
// 맵에 값 설정
memberList2.set('123_456', '사자');
memberList2.set('789', '호랑이');
memberList2.set('222_222', '사슴');
console.log(memberList2.size); // 결과: 3
key(), values(), entries()를 사용해 각각 키, 값, 키와 값의 세트를 가져올 수 있으며,
반환값은 모두 반복자 객체이므로 for...of 등을 사용해 처리할 수 있다.
// 맵 초기화
const memberList = new Map)[[20, '사자'], [50, '호랑이'], [120, '사슴']]);
const keyList = memberList.keys();
// 20, 50, 120 순서대로 출력
for (let key of keyList) {
console.log(key);
}
const valueList = memberList.values();
// '사자', '호랑이', '사슴' 순서대로 출력
for (let value of valueList) {
console.log(value);
}
const entryList = memberList.entries();
// [20, '사자'], [50, '호랑이'], [120, '사슴'] 순서대로 출력
for (let entry of entryList {
console.log(entry);
}
forEach()를 사용해도 각 세트를 작업할 수 있다.
// 맵 초기화
const memberList = new Map([[20, '사자'], [50, '호랑이'], [120, '사슴']]);
// '20 : 사자', '50 : 호랑이', '120 : 사슴' 순서대로 출력
memberList.forEach((value, key) => {
console.log(`${key] : ${value}`);
});
참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김
'Program > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트에서 데이터 중복 없는 Set 사용하기 (0) | 2022.08.09 |
---|---|
[JavaScript] 자바스크립트에서 배열과 객체에 독자적인 메소드 추가하기 (0) | 2022.08.09 |
[JavaScript] 자바스크립트에서 유일한 데이터 사용하기(심볼) (0) | 2022.08.09 |
[JavaScript] 자바스크립트에서 iterator 정의하여 사용하기 (0) | 2022.08.09 |
[JavaScript] 자바스크립트에서 반복 처리를 위한 반복자 사용하기 (0) | 2022.08.09 |