TypeError: object.forEach không phải là một chức năng trong JavaScript

Typeerror Object Foreach Khong Phai La Mot Chuc Nang Trong Javascript



Trong JavaScript, “ cho mỗi() ” phương thức thực thi một hàm đã cho một lần cho mọi phần tử mảng. Phương thức forEach() được sử dụng trên mỗi phần tử của Mảng, Tập hợp hoặc Bản đồ. Nếu bạn cố gắng sử dụng phương pháp này trên bất kỳ loại nào khác, nó sẽ báo lỗi “ object.forEach không phải là một hàm trong JavaScript ”. Vì vậy, hãy sử dụng nó trên mảng, bản đồ hoặc tập hợp hoặc chuyển đổi các giá trị thành các loại này rồi áp dụng phương pháp này cho chúng.

Bài viết này sẽ xác định lỗi được đề cập và các giải pháp khả thi.

“TypeError: object.forEach không phải là một chức năng trong JavaScript” xảy ra như thế nào?

Khi một giá trị không phải là Mảng, Bản đồ hoặc Tập hợp được sử dụng, thì “ cho mỗi() ” phương pháp như “ Vật ” và vân vân, “ TypeError: object.forEach không phải là một chức năng trong JavaScript ” xảy ra. Hãy kiểm tra nguyên nhân đã nêu một cách thực tế.







Ví dụ

Trong ví dụ đã cho, trước tiên, chúng ta sẽ tạo một đối tượng với các thuộc tính của nó theo cặp khóa-giá trị:



hăng sô vật = {

Tên : 'Stephen' ,

cuộn lại : mười một ,

vấn đề : 'Thương mại'

} ;

Sau đó, in các thuộc tính/mục nhập của nó trên bàn điều khiển bằng phương thức forEach():



vật. cho mỗi ( Ô => {

bảng điều khiển. đăng nhập ( Ô ) ;

} ) ;

Như bạn có thể thấy ở đầu ra, đã xảy ra lỗi do phương thức forEach không áp dụng được cho các đối tượng:





Làm cách nào để khắc phục lỗi được chỉ định?

Để giải quyết lỗi đã thảo luận ở trên, hãy sử dụng các phương thức của Object, chẳng hạn như “ Object.keys() ” để lấy các khóa trong một mảng, “ Object.values() ” để lấy giá trị của đối tượng, hoặc “ Object.entries() ” để truy xuất tất cả các mục của một đối tượng. Hơn nữa, “ Mảng.từ() ” phương thức chuyển đổi đối tượng đã chỉ định thành một mảng đối tượng.



Hãy thử một ví dụ để giải quyết vấn đề này.

Ví dụ 1: Sửa lỗi được đề cập bằng phương thức Object.entries()

Trong ví dụ này, chúng ta sẽ lấy các mục nhập của một đối tượng bằng cách sử dụng “ Object.entries() ” phương pháp với “ cho mỗi() ” phương thức trả về một mảng các mục nhập của đối tượng theo cặp khóa-giá trị:

Vật . mục ( vật ) . cho mỗi ( Trong => {

bảng điều khiển. đăng nhập ( Trong ) ;

} ) ;

Nó sẽ không báo lỗi vì phương thức Object.entries() chuyển đổi các giá trị trong một mảng và phương thức forEach() được sử dụng để thực thi hàm đã cho trên mọi phần tử.

Đầu ra chỉ ra rằng phương thức forEach() được chạy thành công trên Đối tượng bằng cách sử dụng phương thức Object.entries():

Ghi chú: Phương thức forEach cũng được áp dụng để nhận các khóa và giá trị của một đối tượng bằng phương thức Object.keys() và Object.values().

Bây giờ, hãy xem nếu bạn không muốn lấy khóa, giá trị hoặc mục nhập của đối tượng, vậy bạn sẽ làm gì? Xem ví dụ đã cho!

Ví dụ 2: Sửa lỗi được đề cập bằng phương thức Array.from()

Để khắc phục lỗi này, hãy chuyển đổi đối tượng thành một mảng đối tượng, sau đó áp dụng phương thức forEach() cho nó bằng cách sử dụng “ Mảng.từ() ' phương pháp. Nó sẽ in tất cả các thuộc tính của một đối tượng mà không báo lỗi.

Trước tiên hãy chuyển đổi đối tượng thành một mảng đối tượng:

hăng sô vật = [ {

Tên : 'Stephen' ,

cuộn lại : mười một ,

vấn đề : 'Thương mại'

} ]

Gọi phương thức forEach():

Mảng . từ ( vật ) . cho mỗi ( tại => {

bảng điều khiển. đăng nhập ( tại ) ;

} ) ;

đầu ra

Chúng tôi đã tổng hợp tất cả các giải pháp tốt nhất có thể để khắc phục lỗi đã chỉ định.

Phần kết luận

Lỗi được đề cập xảy ra khi bạn cố gắng sử dụng “ cho mỗi() ” trên một giá trị không phải là Mảng, Tập hợp hoặc Bản đồ. Để khắc phục lỗi này, hãy sử dụng “ Mảng.từ() ” để chuyển đổi đối tượng thành một mảng và sau đó sử dụng phương thức forEach() trên đó. Bài viết này mô tả sự xuất hiện và giải pháp cho lỗi được đề cập.