inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Javascript ES6+ 제대로 알아보기 - 중급

Map

이터레이터 질문드려용!

340

케냐더블

작성한 질문수 28

0

오브젝트는 배열을 반환하고 

map,set 은 이터레이터를 반환한다고 하셧는데

배열은 이터러블하니까 즉 이터레이터를 가지고있으니 같다고 할수있을까요?? 

또  오브젝트와 맵은 어떨대 구분해서 사용해야할지 모르겠습니다..

javascript es6

답변 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