갈푸라떼
갈푸라떼는 개발중
갈푸라떼
전체 방문자
오늘
어제
  • 분류 전체보기 (232)
    • CS (0)
      • CSinfo (0)
    • Frontend (15)
      • HTML,CSS (1)
      • Javascript (2)
      • React (0)
      • React Hook (12)
    • Backend (0)
      • Python (0)
      • Node.js (0)
      • php (0)
    • DB (2)
      • MySQL (2)
      • BigQuery (0)
      • Mongodb (0)
    • Study (186)
      • JavaScript (72)
      • JavaScript(Clean code) (50)
      • Node.js (11)
      • HTML,CSS (13)
      • React (30)
      • TypeScript (10)
      • React-Native (0)
    • Error (2)
      • error (2)
    • Git (22)
      • Git (22)
    • Help Coding (4)
      • Useful websites (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • Github

공지사항

인기 글

태그

  • symbol
  • nodemon
  • ECMAScript
  • 자바스크립트엔진
  • 렉시컬 환경
  • 상속
  • 스코프 체인
  • 컴파일러
  • 싱글스레드
  • Babel
  • PM2
  • 인터프리터
  • 객체타입
  • 프로토타입
  • 호이스팅
  • this
  • 정적 레벨
  • 심볼
  • 오버라이딩
  • 실행 컨텍스트
  • Arrow
  • 네이밍
  • SPREAD
  • prototype
  • 함수
  • class
  • function
  • 이터러블
  • 원시타입
  • structure

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갈푸라떼

갈푸라떼는 개발중

Error/error

[JavaScript_error] forEach is not a function (유사배열)

2022. 5. 12. 18:05

* 문제

  • JavaScript 상에서 forEach 구문을 돌렸지만 해당 에러 메시지가 뜨며 실행이 되지 않는다.
  • "forEach is not a function" 에러 메시지 발생

* 원인

  • 배열이 아니기 때문이다.
  • 유사배열이기 때문이다.

* 유사배열(Array-like Objects)이란?

  • 배열이 아닌데 배열인척 하는것
  • 유사배열은 말그대로 배열과 유사한 형태로 흉내낸 객체일 뿐이기 때문에 Array 에서 제공하는 메서드가 기본적으로 제공되지않는다.
유사배열의 조건
1. 반드시 length가 필요하다.
2. 숫자 형태의 indexing이 가능해야한다.

쉽게 말해서
* 배열 = 객체 + length + 메서드
* 유사배열 = 객체 + length

로 이해하면 된다.

 

예외적으로 node같은 경우는 프로토타입에 forEach가 있기 때문에 가능하다.

(필요하다면 직접 프로토타입에 사용하고 싶은 메서드나 함수를 추가하여 사용할 수 있다.)


이럴때는 Array.isArray 메서드를 사용해서 구분할 수 있다.

Array.isArray(array);	// true	
Array.isArray(node);	// false
Array.isArray(ele);	// false

 


* 해결

Array.from(Array-like Objects).forEach(i => {
  console.log(i)
});

 

* array 형태 객체를 array로 만들어서 돌리면 된다.

 

'Error > error' 카테고리의 다른 글

[error] react-scripts: Permission denied  (0) 2022.06.14
    'Error/error' 카테고리의 다른 글
    • [error] react-scripts: Permission denied
    갈푸라떼
    갈푸라떼

    티스토리툴바