[TIL] iterable

oaksusu·2024년 2월 28일
0

TIL

목록 보기
4/36
post-thumbnail

0. 주제 선정하게 된 배경 :

요즘들어 이터러블 관련 에러를 많이 보게 되었다.
오늘도 이터러블 관련해서 막힌 부분이 있었는데,
Object.entries()는 객체를 배열로 변환하고,
Array.from()도 유사 배열 객체나 이터러블 객체를 배열로 생성해준다고 하지만
둘이 다르다라는걸 제대로 인지하지 못했다.

아마 에러에서 이터러블 관련된 것을 마주하면 대충 배열이나 객체 문제라고 짐작하면서 주먹구구식으로 해결했고,
Object.entries()와 Array.from()의 차이를 제대로 이해하지 못하는것은 이터러블에 대한 개념에 대해 잘 몰라서 생기는 문제 같았다.
앞으로는 제대로 알고 사용하고 싶어서 주제로 선택하게 되었다.

1. 제대로 알고 넘어가기 :

1-1. iterable(이터러블)이란?

: 반복 가능한 객체 (= 순회 가능한 객체)

1-2. 모든 객체가 iterable인가?

: No!
객체에는 2가지로 나뉨

  1. 반복 가능한 객체 (iterable)
  2. 반복 가능하지 않는 객체 (Non-iterable)

보통 내가 자주 사용하는 일반적인 객체는
key-value 쌍으로 되었는 객체를 말하고 반복기능이 없음! 순회가 안됨!

1-3. 순회가능한 객체를 만들기 위해서는?

어제 공부했던 Object.entries() / Object.values() / Object.keys() 를 사용해야 함!

1-4. Object.entries() vs Array.from()

: 이제 이터러블에 대해 이해했으니
둘의 차이점을 정리해보자면,

1) Object.entries()

: 일반적인 객체는 열거 가능하고(enumerable) 이터러블하지 않는데(non-iterable),
객체의 속성을 [key, value] 쌍의 배열로 반환

2) Array.from()

: 이터러블 객체나 유사 배열 객체를 받아서(둘다 iterable)
새로운 배열로 반환
*배열도 이터러블한 객체임

1-5. 번외: 열거 가능 vs 순회 가능

1) 열거 가능 (Enumerable)

: 객체의 속성을 하나씩 나열할 수 있게 해주는것
=> 객체의 속성을 찾아내고 식별하는데 사용

2) 순회 가능 (iterable)

: 객체를 직접적으로 반복할 수 있게 해주는 것
=> 객체의 요소를 처리하고 작업하는데 사용

profile
삐약

0개의 댓글