TypeError: object.forEach ไม่ใช่ฟังก์ชันใน JavaScript

Typeerror Object Foreach Michi Fangkchan Ni Javascript



ในจาวาสคริปต์ “ แต่ละ() ” วิธีการเรียกใช้ฟังก์ชันที่กำหนดหนึ่งครั้งสำหรับทุกองค์ประกอบอาร์เรย์ เมธอด forEach() ใช้กับแต่ละองค์ประกอบของ Array, Set หรือ Map หากคุณพยายามใช้วิธีนี้กับประเภทอื่น มันจะส่งข้อผิดพลาด “ object.forEach ไม่ใช่ฟังก์ชันใน JavaScript '. ดังนั้น ให้ใช้กับอาร์เรย์ แมป หรือตั้งค่าหรือแปลงค่าเป็นประเภทเหล่านี้ แล้วนำวิธีนี้ไปใช้

บทความนี้จะระบุข้อผิดพลาดที่กล่าวถึงและแนวทางแก้ไขที่เป็นไปได้

“TypeError: object.forEach ไม่ใช่ฟังก์ชันใน JavaScript” เกิดขึ้นได้อย่างไร

เมื่อใช้ค่าที่ไม่ใช่ Array, Map หรือ Set เครื่องหมาย “ แต่ละ() ” วิธีการ เช่น “ วัตถุ ” และอื่น ๆ ที่ “ TypeError: object.forEach ไม่ใช่ฟังก์ชันใน JavaScript ” เกิดขึ้น มาทดสอบสาเหตุดังกล่าวในทางปฏิบัติกัน







ตัวอย่าง

ในตัวอย่างแรก เราจะสร้างวัตถุที่มีคุณสมบัติในคู่คีย์-ค่า:



คอสต์ วัตถุ = {

ชื่อ : 'สตีเฟน' ,

โรลโน : สิบเอ็ด ,

เรื่อง : 'พาณิชย์'

} ;

จากนั้นพิมพ์คุณสมบัติ/รายการบนคอนโซลโดยใช้เมธอด forEach():



วัตถุ. แต่ละ ( => {

คอนโซล บันทึก ( ) ;

} ) ;

ดังที่คุณเห็นในเอาต์พุต พบข้อผิดพลาดเนื่องจากเมธอด forEach ไม่สามารถใช้ได้กับวัตถุ:





จะแก้ไขข้อผิดพลาดที่ระบุได้อย่างไร

หากต้องการแก้ไขข้อผิดพลาดที่กล่าวถึงข้างต้น ให้ใช้เมธอดของ Object เช่น “ Object.keys() ” เพื่อรับคีย์ในอาร์เรย์ “ Object.values() ” สำหรับรับค่าของวัตถุ หรือ “ Object.entries() ” สำหรับดึงรายการทั้งหมดของวัตถุ นอกจากนี้ “ อาร์เรย์จาก () ” วิธีการแปลงวัตถุที่ระบุเป็นอาร์เรย์ของวัตถุ



ลองตัวอย่างเพื่อแก้ปัญหานี้

ตัวอย่างที่ 1: แก้ไขข้อผิดพลาดที่กล่าวถึงโดยใช้เมธอด Object.entries()

ในตัวอย่างนี้ เราจะรับรายการของวัตถุโดยใช้ ' Object.entries() ” วิธีการด้วย “ แต่ละ() ” วิธีการที่ส่งคืนอาร์เรย์ของรายการของวัตถุในคู่ของคีย์-ค่า:

วัตถุ . รายการ ( วัตถุ ) . แต่ละ ( ใน => {

คอนโซล บันทึก ( ใน ) ;

} ) ;

จะไม่ทำให้เกิดข้อผิดพลาด เนื่องจากเมธอด Object.entries() แปลงค่าในอาร์เรย์และเมธอด forEach() ใช้เพื่อเรียกใช้ฟังก์ชันที่กำหนดในทุกองค์ประกอบ

เอาต์พุตบ่งชี้ว่าเมธอด forEach() ทำงานได้สำเร็จบนออบเจกต์โดยใช้เมธอด Object.entries():

บันทึก: สำหรับแต่ละเมธอดยังใช้เพื่อรับคีย์และค่าของออบเจกต์โดยใช้เมธอด Object.keys() และ Object.values()

ทีนี้ มาดูกันว่าคุณไม่ต้องการรับคีย์ ค่า หรือรายการของอ็อบเจกต์ คุณจะทำอย่างไร ดูตัวอย่างที่ให้มา!

ตัวอย่างที่ 2: แก้ไขข้อผิดพลาดที่กล่าวถึงโดยใช้วิธี Array.from()

ในการแก้ไขข้อผิดพลาดนี้ ให้แปลงวัตถุเป็นอาร์เรย์ของวัตถุ จากนั้นใช้เมธอด forEach() กับวัตถุนั้นโดยใช้ ' อาร์เรย์จาก () ' กระบวนการ. มันจะพิมพ์คุณสมบัติทั้งหมดของวัตถุโดยไม่มีข้อผิดพลาด

ก่อนอื่นมาแปลงวัตถุเป็นอาร์เรย์ของวัตถุ:

คอสต์ วัตถุ = [ {

ชื่อ : 'สตีเฟน' ,

โรลโน : สิบเอ็ด ,

เรื่อง : 'พาณิชย์'

} ]

เรียก forEach() วิธีการ:

อาร์เรย์ . จาก ( วัตถุ ) . แต่ละ ( ที่ => {

คอนโซล บันทึก ( ที่ ) ;

} ) ;

เอาต์พุต

เราได้รวบรวมวิธีแก้ปัญหาที่ดีที่สุดเท่าที่จะเป็นไปได้เพื่อแก้ไขข้อผิดพลาดที่ระบุ

บทสรุป

ข้อผิดพลาดดังกล่าวเกิดขึ้นเมื่อคุณพยายามใช้ “ แต่ละ() ” วิธีการกับค่าที่ไม่ใช่ Array, Set หรือ Map หากต้องการแก้ไขข้อผิดพลาดนี้ ให้ใช้ปุ่ม “ อาร์เรย์จาก () ” วิธีการแปลงวัตถุเป็นอาร์เรย์แล้วใช้ forEach() วิธีการกับมัน บทความนี้อธิบายถึงการเกิดขึ้นและวิธีแก้ไขข้อผิดพลาดดังกล่าว