Heim > Web-Frontend > js-Tutorial > Hauptteil

Eine ausführliche Erklärung von js-Array-Schleifen und -Iterationen

迷茫
Freigeben: 2017-03-26 17:12:22
Original
1413 Leute haben es durchsucht

1. Die erste Methode ist die for()-Schleife

for( varindex = 0; index < array.length; i ++){}
Nach dem Login kopieren

Diese Methode ist sehr verbreitet und existiert in verschiedenen Sprachen, daher werde ich hier nicht auf Details eingehen

2. Die neu hinzugefügte Iterationsmethode von es5 (every, filter, forEach, map, some)

Diese Methoden erhalten alle zwei Parameter, 1) eine Funktion, die für jedes Element ausgeführt werden kann (die übergebene Funktion akzeptiert drei Parameter: a. den Wert des Array-Elements; b . der Wert des Elements in der Array-Position; 2) (optional) der Bereich, in dem die Funktion ausgeführt wird – beeinflusst den Wert davon.

Syntax: Nehmen Sie forEach als Beispiel, andere ähneln

array.forEach(callback [, thisArg])
Nach dem Login kopieren
nums = [3, 2, 3, 4
Nach dem Login kopieren

1) every()-Methode:

Testen Sie, ob alle Elemente im Array vorhanden sind Bestehen Sie den angegebenen Funktionstest. Wenn eines der Elemente „false“ zurückgibt, wird „false“ zurückgegeben.

Die Methode „Every“ führt für jedes Element des Elements eine Rückruffunktion aus ( schließt keine Elemente ein, die durch bestimmte Methoden oder gelöscht wurden undefiniert, der Wert ist definiert als Außer für undefinierte Elemente ), bis ein Rückruf gefunden wird, der dazu führt, dass der Rückruf false zurückgibt (ein Wert, der in false konvertiert werden kann), aus der Iteration springen und false zurückgeben. Gibt andernfalls „true“ zurück (wahr für alle Elemente).

Die von der every-Methode durchlaufenen Elemente sind die Werte des ersten Rückrufs, und auf die danach hinzugefügten Werte wird nicht zugegriffen.

function isBigEnough(elemen) {  
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
Nach dem Login kopieren
var a = [1, 2, 3,, 4].every (function(value){
console.log(value)   return value       
})//1,2,3,4console.log(a)
//true
a = [1, 2, 3, undefined,4].every (function(value){
console.log(value)   return value       
})
//1,2,3,undefind
console.log(a)
//false
Nach dem Login kopieren

2) filter()-Methode:

Verwenden Sie die angegebene Funktion, um alle Elemente zu testen, ein neues Array zu erstellen und zurückzugeben, das alle Elemente enthält, die den Test bestehen

Filter ruft einen Rückruf für jedes Element im Array auf ( umfasst keine Elemente, die durch bestimmte Methoden gelöscht oder undefiniert wurden, mit Ausnahme von Elementen, deren Wert als undefiniert definiert ist ) und verwendet alle Rückrufe, um „true“ oder „Elemente“ zurückzugeben Äquivalent zu true, um ein neues Array zu erstellen. Elemente, die den Rückruftest nicht bestehen, werden übersprungen und nicht in das neue Array aufgenommen.

var a = [1, 2, 3, 7,4].filter(function(value){   
    return value > 4      
})
console.log(a)
//[7]
Nach dem Login kopieren

3) forEach()-Methode:

forEach führt die Rückruffunktion in aufsteigender Reihenfolge für jedes bekannte Element im Array aus (ausgenommen Löschung oder Löschung durch bestimmte Methoden). Undefiniert Elemente, außer Elemente, deren Wert als undefiniert definiert ist)

Der von forEach durchlaufene Bereich wird bestimmt, bevor der Rückruf zum ersten Mal aufgerufen wird. Auf Elemente, die dem Array nach dem Aufruf von forEach hinzugefügt werden, kann per Rückruf nicht zugegriffen werden. Wenn ein vorhandener Wert geändert wird, ist der an Callback übergebene Wert der Wert in dem Moment, in dem forEach sie durchläuft. Gelöschte Elemente werden nicht durchlaufen. Wenn das besuchte Element während der Iteration gelöscht wird (z. B. durch die Verwendung von shift()), werden nachfolgende Elemente übersprungen. Es gibt immer undefiniert zurück und kann nicht in einer Kette aufgerufen werden.

Es gibt keine Möglichkeit, die forEach-Schleife abzubrechen oder zu verlassen, außer eine Ausnahme auszulösen. Wenn Sie dies benötigen, ist die Verwendung der forEach()-Methode falsch. Sie können stattdessen eine einfache Schleife verwenden

function logArrayElements(element, index, array) {
    console.log("a[" + index + "] = " + element);
}

// 注意索引2被跳过了,因为在数组的这个位置没有项
[2, 5, ,9].forEach(logArrayElements);

// a[0] = 2
// a[1] = 5
// a[3] = 9

[2, 5,"" ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = 
// a[3] = 9

[2, 5, undefined ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9


let xxx;
// undefined

[2, 5, xxx ,9].forEach(logArrayElements);
// a[0] = 2
// a[1] = 5
// a[2] = undefined
// a[3] = 9
Nach dem Login kopieren

 Wenn das Array während der Iteration geändert wird, werden die anderen Elemente übersprungen .

Das folgende Beispiel gibt „eins“, „zwei“, „vier“ aus. Wenn das Element mit dem Wert „zwei“ erreicht ist, wird das erste Element des gesamten Arrays entfernt, wodurch alle verbleibenden Elemente um eine Position nach oben verschoben werden. Da sich das Element „vier“ jetzt weiter vorne im Array befindet, wird „drei“ übersprungen. forEach()Erstellt vor der Iteration keine Kopie des Arrays.


var words = ["one", "two", "three", "four"];
words.forEach(function(word) {
  console.log(word);  if (word === "two") {
    words.shift();
  }
});// one// two// four
Nach dem Login kopieren

4) map()-Methode:

für jedes Element des Arrays ( beinhaltet nicht das Löschen durch bestimmte oder undefinierte Methoden Elemente, mit Ausnahme von Elementen, deren Wert als undefiniert definiert ist ) führen eine angegebene Funktion aus und geben ein neues Array zurück. Jedes Element ist das Ergebnis der Rückruffunktion

Verwenden Sie die Map-Methode, um Wenn Sie das Array verarbeiten, wird der Bereich der Array-Elemente bestimmt, bevor die Rückrufmethode zum ersten Mal aufgerufen wird. Während der Ausführung der Map-Methode: Der Rückruf greift nicht auf die neu hinzugefügten Elemente im ursprünglichen Array zu. Wenn die vorhandenen Elemente geändert oder gelöscht werden, sind ihre an den Rückruf übergebenen Werte die von ihnen übergebenen Werte Auf den Wert des gelöschten Elements wird nicht zugegriffen.

var numbers = [1, 4, 9];var roots = numbers.map(Math.sqrt);/* roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9] */
Nach dem Login kopieren

5) some()-Methode:

Testen Sie, ob bestimmte Elemente im Array den Test der angegebenen Funktion bestehen. Wenn ein Element „true“ zurückgibt, gibt es „true“ zurück

einige Führen Sie die Rückruffunktion einmal für jedes Element im Array aus, bis ein Rückruf gefunden wird, der dazu führt, dass der Rückruf einen „wahren Wert“ zurückgibt (d. h. einen Wert, der in einen booleschen wahren Wert konvertiert werden kann), stoppen Sie die Iteration und Gibt true zurück; andernfalls (alle Elemente sind false), gibt false zurück.

var a = [1, 2, 3, 7,4].some (function(value){   return value > 8       })
console.log(a)//false
a = [1, 2, 3, 9,4].some (function(value){   
return value > 8      
 })
console.log(a)
//true
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEine ausführliche Erklärung von js-Array-Schleifen und -Iterationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage