TIL

TIL - 20220708

Lee Jaeyoon2 2022. 7. 8. 15:40

 오늘은 모던 JavaScript 튜토리얼에서 Object.keys, values, entries(https://ko.javascript.info/keys-values-entries)에 대해 공부했다. 제목만 봤을 때는 keys, values, entries에 대한 공부는 이미 하지 않았나?라는 생각을 했는데 내가 지금까지 공부한 내용은 map, set, array에서 keys, values, entries에 대한 내용이었고 이 장에서는 객체에서 key, values, entries를 사용하는 법에 대한 내용이었던 것이다. 차이점은 천천히 살펴보고 내가 작성한 질문은 다음과 같다.

차이점은 다음과 같다.

  map, set, array 객체
호출 문법 map.keys() Object.keys(obj) (여기서, obj는 사용할 객체)
반환 값 iterable 객체 '진짜' 배열

 객체가 진짜 배열을 반환하는 이유는 하위 호환성 문제라고 모던 JavaScript 튜토리얼 내용으로 나와 있는데, 아직 이 하위 호환성이라는 키워드가 잘 와닿지 않는다. 이 부분에 대해선 내가 직접 해당 문제를 직접 느껴보거나 찾아서 공부하지 않는 이상 모를 것 같다. 알아내기 위해 MDN 공식 문서(https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)까지 찾아봤지만 내가 원하는 답은 찾을 수 없었다. 

 

 객체에선 map과 filter 같은 배열 전용 메서드를 사용할 수 없다. map과 filter 메서드를 사용하려면 entries로 객체를 배열로 만들고 원하는 배열 메서드를 사용한 뒤, fromEntries로 다시 객체를 만드는 방법이 있다.

 

 이번 장을 공부하면서 배열에서 map을 막 사용하다 보니 객체에서도 map이 당연히 되겠지라는 안일한 생각으로 map을 사용한 적이 있었다. 앞으로 객체에서 map을 사용하고 어? 왜 안 되지?라는 실수를 범하지 말아야겠다.