Maison  >  Article  >  interface Web  >  Traversée de boucle de tableau Javascript (explication détaillée forEach)

Traversée de boucle de tableau Javascript (explication détaillée forEach)

亚连
亚连original
2018-05-19 14:17:089116parcourir

Cet article présente principalement l'explication détaillée du parcours de boucle de tableau forEach pour Javascript. Il est très utile pour apprendre forEach. Si vous en avez besoin, vous pouvez en savoir plus.

Parcours de boucle de tableau 1.js.

Variable de boucle de tableau, la première chose qui me vient à l'esprit est for(var i=0;i

De plus, vous pouvez également utiliser la méthode forEach plus simple

fonction 2.forEach.

Les types Array de Firefox et Chrome ont tous deux des fonctions forEach. Utilisez comme suit :

<!--Add by oscar999--> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Author" CONTENT="oscar999"> 
</HEAD> 
 
<BODY> 
<script> 
var arryAll = []; 
arryAll.push(1); 
arryAll.push(2); 
arryAll.push(3); 
arryAll.push(4); 

//匿名方式
arryAll.forEach(function(e){ 
  alert(e); 
}) 

function t1(arg){alert(arg);}
//非匿名方式
arryAll.forEach(t1,arryAll);

</script> 
</BODY> 
</HTML>

Cependant, le code ci-dessus ne fonctionne pas correctement dans IE.

Parce que Array d'IE n'a pas cette méthode

alert(Array.prototype.forEach);

L'exécution de la phrase ci-dessus entraînera "undefined", ce qui is On dit qu'Array n'a pas de méthode forEach dans IE.

3. Rendre IE compatible avec la méthode forEach

Étant donné que le tableau d'IE n'a pas de méthode forEach, nous y ajouterons manuellement cette méthode prototype.

//Array.forEach implementation for IE support.. 
//https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach 
if (!Array.prototype.forEach) { 
  Array.prototype.forEach = function(callback, thisArg) { 
    var T, k; 
    if (this == null) { 
      throw new TypeError(" this is null or not defined"); 
    } 
    var O = Object(this); 
    var len = O.length >>> 0; // Hack to convert O.length to a UInt32 
    if ({}.toString.call(callback) != "[object Function]") { 
      throw new TypeError(callback + " is not a function"); 
    } 
    if (thisArg) { 
      T = thisArg; 
    } 
    k = 0; 
    while (k < len) { 
      var kValue; 
      if (k in O) { 
        kValue = O[k]; 
        callback.call(T, kValue, k, O); 
      } 
      k++; 
    } 
  }; 
}

Pour une introduction détaillée, veuillez vous référer à :
https://developer.mozilla.org/en/JavaScript/Reference /Global_Objects/ Array/forEach

4. Comment sortir de la boucle ?

Js Dans ce cas, forEach ne peut pas utiliser continue, break; Vous pouvez utiliser les deux méthodes suivantes :

1. 🎜 >

2. Contrôle de l'instruction Return (return true ou return false)


En fait, return a une fonction similaire pour continuer


Ce qui suit Un exemple consiste à supprimer les multiples de 2 et 3 dans le tableau


<!--Add by oscar999--> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Author" CONTENT="oscar999"> 
</HEAD> 
 
<BODY> 
<script> 
if (!Array.prototype.forEach) { 
  Array.prototype.forEach = function(callback, thisArg) { 
    var T, k; 
    if (this == null) { 
      throw new TypeError(" this is null or not defined"); 
    } 
    var O = Object(this); 
    var len = O.length >>> 0; // Hack to convert O.length to a UInt32 
    if ({}.toString.call(callback) != "[object Function]") { 
      throw new TypeError(callback + " is not a function"); 
    } 
    if (thisArg) { 
      T = thisArg; 
    } 
    k = 0; 
    while (k < len) { 
      var kValue; 
      if (k in O) { 
        kValue = O[k]; 
        callback.call(T, kValue, k, O); 
      } 
      k++; 
    } 
  }; 
} 
 
var arryAll = []; 
arryAll.push(1); 
arryAll.push(2); 
arryAll.push(3); 
arryAll.push(4); 
arryAll.push(5);
arryAll.push(6); 
arryAll.push(7); 
 
 
var arrySpecial = []; 
 
arryAll.forEach(function(e){ 
  if(e%2==0) 
  { 
    arrySpecial.push(e); 
  }else if(e%3==0) 
  { 
    arrySpecial.push(e); 
  } 
}) 
 
</script> 
</BODY> 
</HTML>

Utilisez le retour pour réaliser ; l'effet ci-dessus


arryAll.forEach(function(e){ 
  if(e%2==0) 
  { www.jb51.net
    arrySpecial.push(e); 
    return; 
  } 
  if(e%3==0) 
  {   
    arrySpecial.push(e); 
    return; 
  } 
})

Quant à la façon d'écrire un effet similaire à break, aucune meilleure méthode n'a encore été trouvée.


Avis personnel : Que ce soit en syntaxe Java ou C#, forEach consiste à parcourir toutes les valeurs


J'ai cherché et certains ont dit que le retour false pouvait être obtenu. c'est un try , l'effet de return false est le même que celui de return, et l'effet de return true est le même.

Le code de test ci-dessous a été ajouté par moi-même.



var arryAll = []; 
arryAll.push(1); 
arryAll.push(2); 
arryAll.push(3); 
arryAll.push(4); 
arryAll.push(5);
arryAll.push(6);
arryAll.push(7);

arryAll.forEach(function(e){
alert(e);
if(e>3)
return false;
});

Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir.

Articles associés :

Code js pour parcourir les propriétés des compétences object_javascript

Code js pour parcourir les instances DOM

Code js pour parcourir les attributs des objets

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn