Tipo klaida: object.forEach nėra „JavaScript“ funkcija

Tipo Klaida Object Foreach Nera Javascript Funkcija



„JavaScript“ programoje „ kiekvienam() “ metodas atlieka nurodytą funkciją vieną kartą kiekvienam masyvo elementui. Metodas forEach() naudojamas kiekviename masyvo, rinkinio ar žemėlapio elemente. Jei bandysite naudoti šį metodą bet kokiam kitam tipui, bus rodoma klaida ' object.forEach nėra „JavaScript“ funkcija “. Taigi, naudokite jį masyvuose, žemėlapiuose ar rinkiniuose arba konvertuokite reikšmes į šiuos tipus ir tada pritaikykite jiems šį metodą.

Šiame straipsnyje bus aprašyta minėta klaida ir galimi jos sprendimai.

Kaip atsiranda „TypeError: object.forEach“ nėra „JavaScript“ funkcija?

Kai naudojama reikšmė, kuri nėra masyvas, žemėlapis ar rinkinys, „ kiekvienam() “ metodas, pvz., „ Objektas “ ir taip toliau, „ Tipo klaida: object.forEach nėra „JavaScript“ funkcija ' atsiranda. Išbandykime nurodytą priežastį praktiškai.







Pavyzdys

Pateiktame pavyzdyje pirmiausia sukursime objektą su jo savybėmis rakto-reikšmių poroje:



konst objektas = {

vardas : 'Stephen' ,

rollno : vienuolika ,

tema : 'komercija'

} ;

Tada atspausdinkite jo savybes / įrašus konsolėje naudodami forEach() metodą:



objektas. kiekvienam ( O => {

konsolė. žurnalas ( O ) ;

} ) ;

Kaip matote išvestyje, įvyko klaida, nes metodas forEach netaikomas objektams:





Kaip ištaisyti nurodytą klaidą?

Norėdami išspręsti aukščiau aptartą klaidą, naudokite Object metodus, tokius kaip ' Object.keys() “ norėdami gauti raktus į masyvą, “ Object.values() “, norėdami gauti objekto vertes, arba “ Objektas.įrašai() “, kad būtų galima gauti visus objekto įrašus. Be to, „ Masyvas.nuo() “ metodas konvertuoja nurodytą objektą į objektų masyvą.



Pabandykime pavyzdžiu išspręsti šią problemą.

1 pavyzdys: ištaisykite minėtą klaidą naudodami Object.entries() metodą

Šiame pavyzdyje objekto įrašus gausime naudodami ' Objektas.įrašai() “ metodas su „ kiekvienam() “ metodas, kuris grąžina objekto įrašų masyvą raktų ir reikšmių poromis:

Objektas . įrašų ( objektas ) . kiekvienam ( in => {

konsolė. žurnalas ( in ) ;

} ) ;

Tai nesukels klaidos, nes metodas Object.entries() konvertuoja masyvo reikšmes, o metodas forEach() naudojamas duotai funkcijai vykdyti kiekviename elemente.

Išvestis rodo, kad metodas forEach() sėkmingai paleistas objekte naudojant Object.entries() metodą:

Pastaba: ForEach metodas taip pat taikomas norint gauti objekto raktus ir reikšmes naudojant Object.keys() ir Object.values() metodus.

Dabar pažiūrėkime, ar nenorite gauti objekto raktų, reikšmių ar įrašų, taigi ką darytumėte? Žiūrėkite pateiktą pavyzdį!

2 pavyzdys: ištaisykite minėtą klaidą naudodami Array.from() metodą

Norėdami ištaisyti šią klaidą, konvertuokite objektą į objektų masyvą ir pritaikykite jam metodą forEach() naudodami ' Masyvas.nuo() “ metodas. Jis išspausdins visas objekto savybes, nepateikdamas klaidos.

Pirmiausia paverskime objektą į objektų masyvą:

konst objektas = [ {

vardas : 'Stephen' ,

rollno : vienuolika ,

tema : 'komercija'

} ]

Iškvieskite forEach() metodą:

Masyvas . ( objektas ) . kiekvienam ( adresu => {

konsolė. žurnalas ( adresu ) ;

} ) ;

Išvestis

Surinkome visus geriausius įmanomus sprendimus, kaip ištaisyti nurodytą klaidą.

Išvada

Minėta klaida atsiranda, kai bandote naudoti „ kiekvienam() “ metodą vertėje, kuri nėra masyvas, rinkinys ar žemėlapis. Norėdami ištaisyti šią klaidą, naudokite „ Masyvas.nuo() “ metodą, norėdami konvertuoti objektą į masyvą, o tada jame naudoti metodą forEach(). Šiame straipsnyje buvo aprašytas minėtos klaidos atsiradimas ir sprendimas.