I den här handledningen lär du dig JavaScript för … av loop med hjälp av exempel.
I JavaScript finns det tre sätt att använda en for
loop.
- JavaScript för loop
- JavaScript för … i loop
- JavaScript för … of loop
Den for… of
slinga infördes i senare versioner av JavaScript ES6 .
Den for… of
slinga i JavaScript kan du iterera över iterable objekt (arrayer, uppsättningar, kartor, strängar etc).
JavaScript för … of loop
Slingans syntax for… of
är:
for (element of iterable) ( // body of for… of )
Här,
- iterable - ett iterabelt objekt (array, set, strings, etc).
- element - objekt i iterabeln
På vanlig engelska kan du läsa koden ovan som: för varje element i den iterabla, kör slingan.
för … av med Arrays
Den for… of
slinga kan användas för att iterera över en array. Till exempel,
// array const students = ('John', 'Sara', 'Jack'); // using for… of for ( let element of students ) ( // display the values console.log(element); )
Produktion
John Sara Jack
I ovanstående program används for… of
slingan för att itera över studentens arrayobjekt och visa alla dess värden.
för … av med strängar
Du kan använda for… of
loop för att iterera över strängvärden. Till exempel,
// string const string = 'code'; // using for… of loop for (let i of string) ( console.log(i); )
Produktion
koda
för … av med uppsättningar
Du kan iterera genom Set-element med hjälp av for… of
loop. Till exempel,
// define Set const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )
Produktion
1 2 3
för … av med Maps
Du kan iterera genom kartelement med hjälp av for… of
slingan. Till exempel,
// define Map let map = new Map(); // inserting elements map.set('name', 'Jack'); map.set('age', '27'); // looping through Map for (let (key, value) of map) ( console.log(key + '- ' + value); )
Produktion
namn- Jack ålder- 27
Användardefinierade Iteratorer
Du kan skapa en iterator manuellt och använda for… of
slingan för att iterera genom iteratorerna. Till exempel,
// creating iterable object const iterableObj = ( // iterator method (Symbol.iterator)() ( let step = 0; return ( next() ( step++; if (step === 1) ( return ( value: '1', done: false); ) else if (step === 2) ( return ( value: '2', done: false); ) else if (step === 3) ( return ( value: '3', done: false); ) return ( value: '', done: true ); ) ) ) ) // iterating using for… of for (const i of iterableObj) ( console.log(i); )
Produktion
1 2 3
för … av med generatorer
Eftersom generatorer är iterabla kan du implementera en iterator på ett enklare sätt. Då kan du iterera genom generatorerna med for… of
slingan. Till exempel,
// generator function function* generatorFunc() ( yield 10; yield 20; yield 30; ) const obj = generatorFunc(); // iteration through generator for (let value of obj) ( console.log(value); )
Produktion
10 20 30
för … av Vs för … i
för av | för … in |
---|---|
Den for… of loop används för att iterera genom värden som en iterable. | Den for… in loop används för att iterera genom tangenterna hos ett objekt. |
Den for… of slinga inte kan användas för att iterera över ett objekt. | Du kan använda för for… in att iterera över en iterabel sådan matriser och strängar men du bör undvika att använda for… in för iterables. |
Den for… of
slingan introducerades i ES6 . Vissa webbläsare stöder kanske inte dess användning. Om du vill veta mer besöker du JavaScript för … av support.