บทความนี้จะระบุข้อผิดพลาดที่กล่าวถึงและแนวทางแก้ไขที่เป็นไปได้
“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() วิธีการกับมัน บทความนี้อธิบายถึงการเกิดขึ้นและวิธีแก้ไขข้อผิดพลาดดังกล่าว