돌아가기

반복 가능한 객체의 키

중요도: 5

map.keys()를 사용해 배열을 반환받고, 이 배열을 변수에 저장해 .push와 같은 배열 메서드를 적용하고 싶다고 해봅시다.

작동하지 않네요.

let map = new Map();

map.set("name", "John");

let keys = map.keys();

// Error: keys.push is not a function
keys.push("more");

이유가 무엇일까요? keys.push가 작동하게 하려면 어떻게 코드를 고쳐야 할까요?

keys.push가 동작하지 않은 이유는 map.keys()가 배열이 아니라 이터러블을 반환하기 때문입니다.

Array.from을 이용하면 맵을 배열로 변환할 수 있습니다.

let map = new Map();

map.set("name", "John");

let keys = Array.from(map.keys());

keys.push("more");

alert(keys); // name, more