https://nukw0n-dev.tistory.com/13
위 블로그 글을 공부하여 작성하였습니다.
Map
map 자료구조는 key - value로 구성됩니다.
기존에 알고 있던 내용도 있지만 value에 함수를 넣을 수 있다는 사실을 알게 되었습니다.
const testmap = new Map();
testmap.set(1,123);
testmap.set(2,345);
testmap.set(3,789);
const funcRef = () => {};
testmap.set(funcRef, 'function can be key.');
console.log(testmap.get(funcRef)); // 'function can be key'
console.log(testmap.get(() => {})); // undefined
for (let [key, val] of testmap.entries()) {
console.log(key, ':', val); // 1:123, 2:345, 3: 789
}
출처: https://nukw0n-dev.tistory.com/13 [찐이의 개발 연결구과:티스토리]
Iteration
key - value 를 Iteration 할때에는 for of 를 사용하면 됩니다.
for (let [key, val] of testmap.entries()) {
console.log(key, ':', val); // 1:123, 2:345, 3: 789
}
출처: https://nukw0n-dev.tistory.com/13 [찐이의 개발 연결구과:티스토리]
배열 -> Map
배열을 Map 으로 바꾸는 방법은 우선 배열이 2차원 배열이여야한다는 조건이 필요합니다.
const testArray = [[1, 123], [2, 345], [3, 789]];
const arrayToMap = new Map(testArray);
console.log(arrayToMap);
// Map { 1 => 123, 2 => 345, 3 => 789 }
for (let [key, val] of arrayToMap) {
console.log(key, ':', val);
//1 : 123
//2 : 345
//3 : 789
}
출처: https://nukw0n-dev.tistory.com/13 [찐이의 개발 연결구과:티스토리]
Map -> 배열
Map 을 다시 배열로 변경할때에는
스프레드 연산자와 Array.from 을 사용한다.
스프레드 연산자는 안쓰이는 곳이 없는 것 같다.
const mapToArray = [...arrayToMap];
const mapToArray_2 = Array.from(arrayToMap);
console.log(mapToArray) // [ [ 1, 123 ], [ 2, 345 ], [ 3, 789 ] ]
console.log(mapToArray_2) // [ [ 1, 123 ], [ 2, 345 ], [ 3, 789 ] ]
for (const [key, val] of mapToArray) {
console.log(key, ':', val);
//1 : 123
//2 : 345
//3 : 789
}
for (const [key, val] of mapToArray_2) {
console.log(key, ':', val);
//1 : 123
//2 : 345
//3 : 789
}
출처: https://nukw0n-dev.tistory.com/13 [찐이의 개발 연결구과:티스토리]
정렬
Map 을 정렬하기 위해서는 배열로 바꾸어준다음 정렬을 하고 다시 Map 으로 변경해야하기때문에 번거롭다.
mapToArray.sort((a, b) => b[1] - a[1]); // value값 기준 내림차순정렬
mapToArray.sort((a, b) => b[0] - a[0]); // key값 기준 내림차순정렬
mapToArray.sort((a, b) => a[1] - b[1]); // value값 기준 오름차순정렬
mapToArray.sort((a, b) => a[0] - b[0]); // key값 기준 오름차순정렬
출처: https://nukw0n-dev.tistory.com/13 [찐이의 개발 연결구과:티스토리]
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
정규표현식 공부 (0) | 2022.06.24 |
---|---|
[프로그래머스/JS] 크레인 인형뽑기 게임 (0) | 2022.06.23 |
[프로그래머스/JS] 3진법 뒤집기 (0) | 2022.06.23 |
[프로그래머스/JS] 비밀지도 (0) | 2022.06.23 |
[프로그래머스/JS] 최소직사각형 (0) | 2022.06.23 |