crystal_dev
Crystal 개발 일지
crystal_dev
전체 방문자
오늘
어제
  • 분류 전체보기 (58)
    • Web (0)
    • Frontend (32)
      • React (0)
      • Javascript (17)
      • HTML & CSS (14)
      • DOM API (0)
    • 사이드프로젝트 (1)
      • Flask (1)
    • CS (0)
      • Network (0)
    • 형상관리 & 개발도구 (2)
      • git (1)
      • VSCode (1)
    • 알고리즘 (19)
      • 백준 알고리즘 (1)
      • 프로그래머스 (17)
      • 기타 (1)
    • Error (2)
      • javscript (1)
      • python (1)
    • blog (2)
      • daily (1)
      • 회고 (0)
      • it참고 (0)
      • 항해99 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • frontend
  • 프로그래머스
  • 자바스크립트
  • Algorithm
  • js기본
  • 풀이
  • 프론트엔드
  • Javascript
  • 느슨한타입
  • let
  • CSS
  • userfont
  • javascript error
  • match()
  • 알고리즘
  • js 기본
  • css정렬
  • css위치
  • js
  • Programmers

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
crystal_dev

Crystal 개발 일지

[javascript] forEach is not a function error
Error/javscript

[javascript] forEach is not a function error

2022. 5. 27. 16:43
728x90
반응형

 

문제 

자바스크립트에서 문자열에 대해 forEach문을 사용했는데 이 에러가 나면서 실행이 되지 않음.

 

원인 

문자열은 배열이 아니기 때문에, 유사 배열이라 이런 오류가 생긴다고 한다. 

 

 

 

유사 배열 객체

Array 형태란 arguments가 length 속성과 0부터 인덱스 된다는 특징을 가지고 있지만,  Array의 forEach, map과 같은 내장 메서드를 가지고 있지 않는 것을 의미한다.

 

배열인지 아닌지 확인하는 방법은 Array.isArray(유사 배열 객체 또는 배열 객체) 로 확인하면 된다.

const arr = [1,2,3,4,5];
const str = "2e3";
var node = document.querySelector('div'); 
var ele = document.body.children;

console.log(Array.isArray(arr)); //true
console.log(Array.isArray(str)); //false
console.log(Array.isArray(node)); //false
console.log(Array.isArray(ele)); //false

 

해결

Array.from(유사배열객체).forEach를 사용함으로써 해결 되었다. 

const str = "2e3";
Array.from(str).forEach(e => {
        ...
});

 

 

참고

https://enchiridion.tistory.com/64

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

728x90
반응형
저작자표시
    crystal_dev
    crystal_dev
    어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧

    티스토리툴바