Articles

Iterating through JavaScript Objects-5 Techniques and Performance Tests.

for…in silmukka

for…in silmukkalauseella voidaan iteroida kaikki kohteen Ei-symboliset, lukemattomat ominaisuudet.

Object.avaimet

Object.keys() menetelmä palauttaa joukon Olionäppäimiä. Tämä luo joukon, joka sisältää objektin ominaisuudet. Voit sitten silmukka läpi array saada avaimet ja arvot tarvitset.

Object.arvot

Object.values() menetelmä palauttaa joukon objektien arvoja. Tämä luo joukon, joka sisältää objektin ominaisuudet. Voit sitten silmukka läpi array saada arvot tarvitset.

Object.getOwnPropertyNames

Object.getOwnPropertyNames() method returns a array of all properties (including non-enumerable properties except for those which use Symbol) fast directly in a annetusta objektista. Tämä luo joukon, joka sisältää objektin ominaisuudet. Voit sitten silmukka läpi array saada avaimet ja arvot tarvitset.

Object.merkinnät

Object.entries() menetelmä palauttaa joukon tietyn kohteen omia luetteloitavia ominaisuuksia pareja.

Suorituskykyvertailu

nyt testataan kaikki nämä tekniikat ja verrataan jokaista niiden nopeuden ja suorituskyvyn perusteella, kumpi on nopeampi.

Useimmat selaimet kuten Chrome ja Firefox toteuttavat korkean resoluution ajoituksen performance.now()performance.now() menetelmä palauttaa DOMHighResTimeStamp millisekunneissa mitattuna.

käyttö

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

aloitetaan testaus…

testitulokset

testiemme mukaan tässä ovat tulokset nousevassa järjestyksessä;

╔═══════════╦════════════════════════════╦═════════════════════════╗
║ 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 ║
╚═══════════╩════════════════════════════╩═════════════════════════╝

joten näiden tulosten mukaan nopein tapa iteroida JavaScript-objektien kautta on for…in silmukka. Nyt tämä ei tarkoita, että muut menetelmät ovat mitättömiä tai hyödyttömiä, kaikki riippuu käyttötapauksista.

for...in silmukan ongelma on, että se iteroituu prototyyppiketjun ominaisuuksien kautta. Se iteroi kohteen ominaisuuksien yli. Javascript-paneelit ovat vain tietynlaisia objekteja, joilla on joitakin käteviä ominaisuuksia, joiden avulla voit käsitellä niitä taulukoina, mutta niillä on silti sisäisiä objektin ominaisuuksia, etkä aio toistaa näitä. for...initeroi myös kaikki lueteltavat ominaisuudet eikä vain joukon alkuaineet. Tämä voi johtaa myös odottamattomiin tuloksiin.

kun silmukoit objektin for...in silmukan läpi, täytyy tarkistaa, kuuluuko ominaisuus objektille. Voit tehdä sen hasOwnProperty.

parempi ja tehokkaampi tapa kierrättää objekteja ES6: ssa on muuntaa objekti ensin joukoksi käyttämällä Object.keys()Object.values()Object.getOwnPropertyNames tai Object.entries() . Sitten kierrät array saada avaimet ja arvot.