Articles

Iterating Gjennom JavaScript-Objekter-5 Teknikker og Ytelsestester.

for…in loop

den for…in loop statement kan brukes til å iterere over alle Ikke-Symbol, enumerable egenskapene til et objekt.

Objekt.taster

metodenObject.keys() returnerer en rekke Objekttaster. Dette oppretter en matrise som inneholder egenskapene til objektet. Du kan deretter sløyfe gjennom matrisen for å få nøklene og verdiene du trenger.

Objekt.verdier

metodenObject.values() returnerer en matrise Med Objektverdier. Dette oppretter en matrise som inneholder egenskapene til objektet. Du kan deretter sløyfe gjennom matrisen for å få de verdiene du trenger.

Objekt.getOwnPropertyNames

Object.getOwnPropertyNames() – metoden returnerer en matrise av alle egenskaper (inkludert ikke-nummererbare egenskaper unntatt De Som bruker Symbol) som finnes direkte i Et gitt objekt. Dette oppretter en matrise som inneholder egenskapene til objektet. Du kan deretter sløyfe gjennom matrisen for å få nøklene og verdiene du trenger.

Objekt.oppføringer

metodenObject.entries() returnerer en matrise av et gitt objekts egen enumerable egenskap par.

Ytelsessammenligning

la oss nå teste alle disse teknikkene og sammenligne hver enkelt basert på hastighet og ytelse for å bestemme hvilken som er raskere.

de fleste nettlesere som Chrome og Firefox implementerer høyoppløselig timing i performance.now()performance.now() – metoden returnerer en DOMHighResTimeStamp, målt i millisekunder.

Bruk

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

la oss begynne å teste…

Testresultater

ifølge våre tester, her er resultatene i stigende rekkefølge;

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

så, ifølge disse resultatene, er den raskeste måten å iterere gjennom javascript-objekter for…in loop. Nå betyr dette ikke at de andre metodene er ugyldige eller ubrukelige, alt avhenger av brukstilfeller.

problemet med en for...in loop er at den itererer gjennom egenskaper i Prototypekjeden. Det iterates over objektegenskaper. Javascript-arrayer er bare en bestemt type objekt med noen praktiske egenskaper som hjelper deg med å behandle dem som arrays, men de har fortsatt interne objektegenskaper, og du mener ikke å iterere over disse. for...initererer også over alle nummererbare egenskaper og ikke bare arrayens elementer. Dette kan også føre til uventede resultater.

når du går gjennom et objekt medfor...in loop, må du sjekke om eiendommen tilhører objektet. Du kan gjøre dette med hasOwnProperty.

en bedre og mer effektiv måte å sløyfe gjennom objekter I ES6 ER å først konvertere objektet til en matrise ved hjelp av Object.keys()Object.values()Object.getOwnPropertyNames eller Object.entries() . Deretter går du gjennom arrayet for å få nøklene og verdiene.