Javascript: forEach는 함수가 아니며 어떻게 해야 합니까?

Javascript: forEach는 함수가 아니며 어떻게 해야 합니까?

2022-10-19 last update

5 minutes reading

루프란?



루프는 특정 조건이 참인 한 컴퓨터 프로그램이 동일한 명령 세트를 계속해서 실행하게 하는 프로그래밍 명령입니다.

전통적인 루프



함수형 프로그래밍의 전통적인 루프는 for 및 while 루프입니다. 이 루프는 일련의 명령문이나 명령을 반복적으로 실행하는 데 사용됩니다. for 루프는 특정 조건이 충족될 때까지 일련의 명령문을 실행하는 반면, while 루프는 조건이 true인 동안 일련의 명령문을 실행합니다.

자바스크립트 forEach 루프



forEach 메서드는 배열의 각 항목에 대해 화살표 함수에서 코드를 실행하는 ES6 자바스크립트 반복 추가 기능입니다. 모든 유형 및 크기(Map 또는 Set)의 배열을 반복하는 데 사용할 수 있습니다.

기존의 "for 루프"와 다릅니다. forEach는 다음 매개변수를 사용하여 배열의 각 요소에 대한 콜백 함수를 전달합니다. 현재 값(필수) - 현재 배열의 인덱스입니다.
const techBlog = ['Nerd', 'Level', 'Tech']
techBlog.forEach((item, index)=>{
console.log(index, item)
})
// Output
// =====

// 0 Nerd
// 1 Level
// 2 Tech

일반적인 오류 관련 - forEach:



아래 예와 같이 forEach를 사용하면 "forEach는 함수가 아닙니다."라는 잡히지 않은 유형 오류가 생성됩니다.
const nums = {
  "number 1" :1,
  "number 2": 2,
  "number 3": 3,
  "number 4":4
}

nums.forEach((num) => {
  console.log(num);
});

// Output the error below image.



위 예제의 사용 사례에서는 forEach를 객체와 함께 사용할 수 있지만 직접 사용할 수는 없습니다. 간단히 수정하려면 키 배열 또는 배열과 유사한 개체를 반환하므로 내장된 키 개체와 함께 사용할 수 있습니다. 이러한 경우 forEach에 직접 연결할 수 있습니다.
const nums = {
  "number 1" :1,
  "number 2": 2,
  "number 3": 3,
  "number 4":4
}

Object.keys(nums).forEach(key => {
  console.log(key +" : "+ nums[key]);
});

// OR

Object.entries(nums).forEach(([key, value]) => {
console.log(key+" - "+value);
});

마무리 - 가장 일반적인 원인:



a- 배열, 맵 또는 세트 유형이 아닌 값에 대해 "forEach"를 호출하면 "forEach는 함수가 아닙니다."오류가 발생합니다. 이 문제를 해결하려면 대신 배열, 맵 또는 세트에서 사용 중인지 확인하십시오.

b- 또한 객체를 console.log하고 Array, Map 또는 Set 유형의 객체인지 확인할 수도 있습니다. Object 유형이 Object인 경우 먼저 이러한 허용 유형인 "Array, Map 또는 Set"으로 변환한 다음 forEach를 연결해야 합니다.

c- 원격 서버에서 가져온 경우 먼저 JSON 개체를 기본 JavaScript 배열로 구문 분석했는지 확인하십시오.