반응형
해시란?
key와 연결되어 있는 value를 삽입, 삭제, 탐색하는 알고리즘 함수이다.
해시테이블?
자료구조의 종류 중 하나 (ex. Array, Object 등)이며 key와 value를 가지는 자료구조 형태이다.
언제 사용해?
특정 종류로 분류되는 값들이 있는데, 걔들을 지지고 볶고 해야할 때 해시 테이블을 사용하여 풀어주면 좋을 것 같다.
Map을 사용한 해시테이블
0. new Map() : 해시테이블 만들기
let map = new Map();
1. set() : 값 가져오기
let number = 0;
let str = 'string';
let obj = { a: 1 };
let fnc = () => {
console.log('fnc');
};
map.set(number, 4); //key에 number 가능
map.set(str, 1); // key에 string 가능
map.set(obj, 2); //key에 object 가능
map.set(fnc, 3); // key에 함수 가능
map.set(number, 0); // 덮어쓰기 가능
console.log(map); // Map(4) {0 => 0, "string" => 1, {…} => 2, ƒ => 3}
2. get() : 값 얻기
map.get(str); // 1
map.get(obj); // 2
map.get('none'); // undefined
map.get({ a: 1 }); // undefined, obj !== { a: 1 }
3. has() : 값 찾기
map.has(str); // true
map.has(obj); // true
map.has('none'); // false
5. delete() : 값 삭제하기
map.delete(str); // true
map.get('none'); // false
6. size : 맵 길이
map.size // 4
map.length // undefined
7. for-of 문으로 해시 탐색
//key, value 쌍으로 출력
for (let [key, value] of map) {
console.log(key + ' = ' + value)
}
//key만 출력
for (let key of map.keys()) {
console.log(key)
}
//value만 출력
for (let value of map.values()) {
console.log(value)
}
반응형
'프로그래머스 > 해시' 카테고리의 다른 글
[해시] 프로그래머스 '할인 행사' - js (0) | 2023.04.06 |
---|---|
[해시] 프로그래머스 '귤 고르기' - js (0) | 2023.03.28 |
[해시] 프로그래머스 '베스트 앨범' - js (0) | 2022.11.07 |
[해시] 프로그래머스 '위장' - js (0) | 2022.11.03 |
[해시] 프로그래머스 '폰켓몬' - js (0) | 2022.11.01 |