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...in
iteroi 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.
Leave a Reply