JavaScript - Maps:Fundamentals and Iteration

신동환·2022년 4월 10일

js

목록 보기
11/18

Maps vs Objects

  • objects의 키는 항상 문자열 타입으로 가진다
  • maps의 키는 어느 타입의 형태이든 가질 수 있다 (단순히 원시타입을 넘어서 객체 형태의 키를 설정할 수 있다)

    객체 형태로 키를 사용할 경우 변수에 선언하여 넣어야한다

const rest = new Map();
rest.set([1,2], 'Test');

console.log(rest.get([1,2]);
> undefined
  • 배열 형태의 타입도 키 set이 가능하지만 get 메소드를 통해서 해당 키와 똑같은 배열 속성을 parameter에 넣었을 때는 undefined 결과가 나왔다

이유는 무엇일까?

  • 키 set에 쓰였던 배열과 get에 쓰였던 배열은 눈으로 볼때는 동일한 요소이지만 memory 주소가 다르기 때문이다
const rest = new Map();
const keyArray = [1,2];

rest.set(keyArray, 'Test');
console.log(rest.get(keyArray));
> Test
  • 키 값을 설정할 변수를 만들어서 진행하면 원하는 값이 나온다

    set과 get 메소드에서 사용한 변수는 동일한 memory 주소에 있기 때문이다

Iteration

  • Map iteration 2가지 방법
    1. for..of
    2. forEach()

  • for..of

let map = new Map();
map.set("first", "first value");
map.set("second", "second value");
map.set(3, "third value");

let map2 = new Map([
	["first", "first value"],
    ["second", "second value"],
    [3, "third value"],
]);

for (let [key, value] of map) {
	console.log(key + ": " + value);
}
for (let [key, value] of map2.entries()) {
	console.log(key + "= " + value);
}

for (let key of map.keys()) {
	console.log(key);
}
for (let value of map2.values()) {
	console.log(value);
}
  • forEach()
let map = new Map();
map.set("first", "first value");
map.set("second", "second value");
map.set(3, "third value");

map.forEach(function(value, key) {
	console.log(key + "= " + value);
})

참고사이트

profile
안녕하세요! Hello, World!

0개의 댓글