Š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 . iš ( 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.