능히 할수있다!

[오류노트] 'OO' is not iterable at~ 본문

STUDY/오류노트

[오류노트] 'OO' is not iterable at~

능히버섯와나 2023. 6. 7.

 

🚧 오류 내용

- 알고리즘 문제풀이 중 구조 분해 할당을 이용하려고 하자 아래와 같은 오류가 발생하였다.

 

 

🔎 분석

  - 'iterable'이라는 것은 '반복 가능한'이라는 뜻으로, 내가 구조분해를 시도하려는 값이 올바른 유형이 아니라는 것이다.

     이에 대해 알아보니 구조 분해를 하기 위해서는 iterable한 object가 필요하며, iterable object를 생성할 수 있는 생성자는

     string, array, typedArray, map, set 등이 있다는 것을 알게되었다.

 

     아래의 예시를 보면 iterable object가 아닌 number는 오류 발생하였고, iterable object인 string은 정상적으로

     구조분해가 이루어진 것을 볼 수 있는데, 전자가 나의 경우였다.

var num = 142312;
console.log(typeof num); // Number
console.log([...num]); // Uncaught TypeError: num is not iterable at~

var str = '142312';
console.log(typeof str); // String
console.log([...str]); // ['1', '4', '2', '3', '1', '2']

 

 

 🪄 문제 해결

  - iterable object를 이용하면 간단하겠지만, 알고리즘상 number의 자리 수를 분해하는 과정이 필요하다면 우선 아래와 같이

    number의 모습을 한 string array로 분해 한뒤, Number()함수를 통해 숫자로 변환하거나 각자 문제에 맞게 활용하면 된다.

var num = 142312;
console.log([...num + '']); // ['1', '4', '2', '3', '1', '2']

 

 

Comments