오늘은 모던 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을 사용하고 어? 왜 안 되지?라는 실수를 범하지 말아야겠다.
'TIL' 카테고리의 다른 글
TIL - 20220710 (0) | 2022.07.10 |
---|---|
TIL - 20220709 (0) | 2022.07.09 |
TIL - 20220707 (0) | 2022.07.07 |
TIL - 20220706 (0) | 2022.07.06 |
TIL - 20220705 (0) | 2022.07.05 |