Articles

Iterating through JavaScript Objects-5 Techniques and Performance Tests.

for…in hurok

a for…in loop utasítás lehet használni, hogy iterálja az összes nem-szimbólum, számtalan tulajdonságait egy objektum.

Object.keys

aObject.keys() metódus egy sor Objektumbillentyűt ad vissza. Ez létrehoz egy tömböt, amely tartalmazza az objektum tulajdonságait. Ezután a tömbön keresztül megkaphatja a szükséges kulcsokat és értékeket.

Object.értékek

aObject.values() metódus egy sor objektum értéket ad vissza. Ez létrehoz egy tömböt, amely tartalmazza az objektum tulajdonságait. Ezután hurok keresztül a tömb, hogy a szükséges értékeket.

Object.getOwnPropertyNames

the Object.getOwnPropertyNames() metódus visszatér egy tömb minden tulajdonság (beleértve a nem megszámlálható tulajdonságok, kivéve azokat, amelyek használata szimbólum) található közvetlenül egy adott objektum. Ez létrehoz egy tömböt, amely tartalmazza az objektum tulajdonságait. Ezután a tömbön keresztül megkaphatja a szükséges kulcsokat és értékeket.

Object.bejegyzések

a Object.entries()metódus egy adott objektum saját megszámlálható tulajdonságának tömbjét adja vissza Párok.

teljesítmény-összehasonlítás

most teszteljük ezeket a technikákat, és hasonlítsuk össze mindegyiket sebességük és teljesítményük alapján, hogy meghatározzuk, melyik a gyorsabb.

a legtöbb böngésző, mint például a Chrome és a Firefox, nagy felbontású időzítést hajt végre a performance.now() – ban. Aperformance.now() metódus aDOMHighResTimeStamp értéket adja vissza, milliszekundumban mérve.

a Használati

let start = performance.now();// code to be timed...let duration = performance.now() - start;

kezdjük tesztelés…

Vizsgálati Eredmények

Szerint a vizsgálatok, itt vannak az eredmények növekvő sorrendben;

╔═══════════╦════════════════════════════╦═════════════════════════╗
║ Rank ║ Technique ║ Time(ms) ║
╠═══════════╬════════════════════════════╬═════════════════════════╣
║ 1 ║ for...in loop ║ 0.8450000023003668 ms ║
║ 2 ║ Object.keys ║ 1.32499999017 ms ║
║ 3 ║ Object.entries ║ 1.63499999326 ms ║
║ 4 ║ Object.values ║ 2.05499998992 ms ║
║ 5 ║ Object.getOwnPropertyNames ║ 2.12500002817 ms ║
╚═══════════╩════════════════════════════╩═════════════════════════╝

szerint ezek az eredmények, a leggyorsabb módja annak, hogy halad végig a JavaScript Objektumok a…a hurok. Ez nem azt jelenti, hogy a többi módszer érvénytelen vagy haszontalan, minden a használati esetektől függ.

afor...in hurok problémája az, hogy a prototípus lánc tulajdonságain keresztül iterálódik. Az objektum tulajdonságai felett iterálódik. Javascript tömbök csak egy bizonyos típusú objektum néhány praktikus tulajdonságok, amelyek segítenek kezelni őket, mint tömbök, de még mindig van belső objektum tulajdonságait, és nem jelenti azt, hogy az iterate át ezeket. for...inaz összes megszámlálhatatlan tulajdonságot is végigjárja, nem csak a tömb elemeit. Ez váratlan eredményekhez is vezethet.

Ha egy for...in hurokkal rendelkező objektumon hurkol át, ellenőriznie kell, hogy a tulajdonság az objektumhoz tartozik-e. Ezt megteheti a hasOwnProperty.

egy jobb és hatékonyabb módja annak, hogy hurok át tárgyakat ES6 az, hogy először átalakítani az objektumot egy tömb segítségével Object.keys()Object.values()Object.getOwnPropertyNames vagy Object.entries(). Ezután körbejárja a tömböt, hogy megkapja a kulcsokat és értékeket.