이터레이터 질문드려용!
340
작성한 질문수 28
오브젝트는 배열을 반환하고
map,set 은 이터레이터를 반환한다고 하셧는데
배열은 이터러블하니까 즉 이터레이터를 가지고있으니 같다고 할수있을까요??
또 오브젝트와 맵은 어떨대 구분해서 사용해야할지 모르겠습니다..
답변 3
1
- 이 영상은 객체에 비해 Map이 가지는 장점을 설명하기 위한 목적 하에 진행된 내용입니다.
강의의 주제에 포커스를 맞춰주시면 좋을 것 같아요.
- 영상 흐름은 다음과 같습니다.
1) 객체는 iterable하지 않다.
2) 'for in'문으로 가능한것 같지만 실은 iterable하다고 볼 수는 없다.
3) 'for in'문으로 iterable한 다른 객체와 비슷한 효과를 얻으려면 hasOwnProperty가 필요하다.
4) 그런데 Map은 이러한 추가동작 없이도 그 자체로 iterable하다.
- "객체를 배열로 변환하는 방법 중 가장 먼저 떠올릴 수 있는 방법은 for in문이라고 말씀드렸던 것이지,
이 것이 유일한 방법이라는 취지로 소개한 것은 아닙니다.
- 영상에서 바로 이어서 Object.keys도 소개를 해드리고 있는데,
Object.entries는 그 연장선상에 있는 방법이라 굳이 소개하지 않고 넘어갔습니다.
객체를 배열로 전환하는 방법은 Object.entries가 더 편리하고 간단한 좋은 방법입니다.
0
객체를 배열로 변환하는 방법을 설명하면서 obj.hasOwnProperty에 키의 유무를 판단하여 배열로 전환하는 방법밖에 없다고 하셨는데
(영상에서 2분 40초경)
const o = {a: 1, b: 2, c: 3}
const obj2Arr = obj => {
const arr = [];
for(let key in obj){
if(obj.hasOwnProperty(key)){
arr.push([key, obj[key]])
}
}
return arr;
}
Object.entries(o)로 객체를 배열로 만드는것과 차이가 있는건가요?
콘솔로 출력했을때 차이를 느끼지 못해서 궁금해서 여쭤봅니다.
0
1. "오브젝트는 배열을 반환한다" 는게 무슨 말씀이신지 모르겠습니다.
혹시 `Object.entries(obj)`나 `Object.keys(obj)`, Object.values(obj)` 등을 실행한 결과를 말씀하시는 걸까요?
2. map, set이 "이터레이터를 반환한다": 늘 그렇지는 않습니다.
다음과 같은 어떤 특수한 명령 중 일부를 수행하지 않고는 이터레이터를 반환하지 않습니다.
set[Symbol.iterator]()
set.values()
set.keys()
set.entries()
map[Symbol.iterator]()
map.values()
map.keys()
map.entries()
3. 어떤 면에서 같은지를 물어보시는지 모르겠습니다만, 이터러블한 개체라는 측면에서는 같다고 볼 수 있겠네요;
다만 강의에서 설명드린대로 배열은 그 자체로 이터레이터는 아니기 때문에, 'next()' 메서드를 호출할 수는 없습니다.
이 부분은 이터레이터 챕터를 들으시면 이해 되시리라 봅니다.
4. 강의상에서 객체와 맵의 차이점을 소개하고 있습니다. 예를 들어 오브젝트는 키에 오직 문자열 및 심볼만 지정할 수 있는 반면 맵은 키에 어떤 것이든 지정할 수 있는 등입니다. 이러한 차이점들에 의해 사용범위가 결정되겠죠. 사용범위는 구체적인 상황에 따라, 필요성에 따라, 사용자의 판단에 따라 얼마든지 달라질 수 있는 부분이기 때문에 콕 찝어서 '이럴 때엔 객체를, 저럴땐 맵을 쓴다'라고 말씀드리긴 어렵네요.
프론트엔드 학습 수준 문의
0
22
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
38
2
최근 코테, 과제 테스트 트렌드
0
53
2
lucide react 아이콘 설치
0
35
2
블로그 안나오네유 ㅠㅠ
0
290
2
궁금한게 있어서 질문 남겨봅니다!
0
288
2
엌ㅋㅋ 인프런에 개발자 도구 켜서 console에 하면
0
271
1
Class 소개
0
334
1
콜백에대해 질문이 있습니다.
0
338
1
2021.3 현시점에서 'ES202X' 기준으로 private 필드를 일반적으로 어떻게 구현하나요?
1
489
2
들어보니 자바의 클래스와 개념이 같은거 같은데 맞나요?
0
282
1
선생님 질문있습니다.
0
281
1
강좌의 실습자료를 요청드려도될까요?
0
267
1
Weakmap을 사용한 비공개 객체 맴버 코드 질문있습니다.
0
339
2
Class 챕터의 2번째 영상 'class 소개' 초반부에 읽어보시라는 링크가 사라졌습니다
0
230
1
혹시 추가강의영상 언제올라나요??
0
251
1
강의
0
318
1
심볼 사용처 관련하여
0
286
1
강의 후반부 질문 있습니다.
2
281
2
추가강의
0
331
1
보너스 강의는 언제 오픈되나요?
1
275
1
선생님 궁금한게 있는데요. 정말로 30살이세요?
1
324
1
동영상 속도가 너무 빨라요 ㅠ_ㅠ...
0
543
2
고급 강의는 언제 올라나요???
0
258
2





