Programming Language/Javascript

[Javascript] Set, Map 기본 개념

Sergemeow 2022. 11. 7. 21:19

자바스크립트로도 자바처럼 Set, Map을 사용할 수 있다.

 

1. Set

set안에서는 중복데이터를 허용하지 않는다. 중복 검사 후 존재하는 데이터의 최초 데이터만 저장한다.

set안에도 다양한 데이터 타입의 값들이 들어갈 수 있다. 

이하는 set 전용 메소드들이다.

add: 값을 추가할 때 사용. setName.add(값)

size: 크기를 알려줌. setName.size

has: 값이 이미 있느지 검사. setName.has(값). true/false가 반환된다.

delete: 값을 삭제. setName.delete(값). 해당 값 삭제. 존재하지 않을시 false 반환. 삭제되면 true 반환

clear: 모두 삭제. setName.clear()

forEach(v,i,self(set)) index와 value는 같다. 키가 별도로 존재하지 않음

const a = new Set([1,2,3]) 배열을 set으로 바꿈

const b = [...a] a set을 b 배열로 바꿈

setName.keys(), setName.values(), setName.entries(). SetIterator로 리턴됨.

 

2. Map

map이란 key와 value 형태의 한쌍의 데이터가 배열로 만들어져 배열에 저장되는 요소이다.

중첩구조이기 때문에 key의 중복확인이 필수이다.

일종의 객체를 배열화 시킨 구조이다.

이하는 map 전용 메소드들이다.

map.size : map의 데이터 수 리턴

map.set(key, value) : 데이터 삽입

map.get(key) : key에 해당하는 value를 조회

map.delete(key) : key값으로 해당 데이터 제거

map.has(key) : 해당 key값의 데이터가 있는지 true/false로 리턴

map.clear() : 모든 데이터 제거

map.keys(), map.values(), map.entries() : map의 각 속성을 iterator로 리턴

<script>
const myMap = new Map();
    myMap.set('html', 90);
    myMap.set('css', 95);
    myMap.set('js', 80);
    
    let sum = 0;
    let avg = 0;
    for(const s of myMap.values()){
    	sum += s;
    }
    avg = (sum/myMap.size).toFixed(1);
    console.log(`Sum: ${sum}`);
    console.log(`Average: ${avg}`);
 
</script>

myMap이라 이름 붙인 map에 과목명을 key로 갖고 점수를 value로 갖는 데이터들을 넣어줬다.

점수의 합계와 평균을 콘솔에 출력하는 코드들도 작성해보았다.