Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de la différence entre for of et for in

黄舟
Libérer: 2017-07-24 13:32:01
original
1331 Les gens l'ont consulté

Le parcours de tableaux utilise généralement une boucle for. Si vous utilisez ES5, vous pouvez également utiliser forEach ES5 a les fonctions de parcours de tableaux telles que map, filter, some, each, réduire, réduireRight, etc., mais leurs résultats renvoient. sont différents. Cependant, si vous utilisez foreach pour parcourir le tableau, vous ne pouvez pas interrompre la boucle en utilisant break et vous ne pouvez pas revenir à la fonction externe en utilisant return.

Array.prototype.method=function(){
  console.log(this.length);
}
var myArray=[1,2,4,5,6,7]
myArray.name="数组"
for (var index in myArray) {
  console.log(myArray[index]);
}
Copier après la connexion

L'utilisation de for in peut également parcourir le tableau, mais il y aura les problèmes suivants :

1. L'index est un nombre de chaîne et ne peut pas effectuer directement d'opérations géométriques

2. L'ordre de parcours peut ne pas être conforme à l'ordre interne du tableau réel

3. L'utilisation de for in parcourra toutes les propriétés énumérables du tableau, y compris les prototypes. Par exemple, la méthode prototype et l'attribut name de Shangli sont

, donc for in est plus approprié pour parcourir des objets. Ne pas utiliser for in pour parcourir des tableaux.

Donc, en plus d'utiliser une boucle for, comment pouvons-nous parcourir le tableau plus simplement et correctement pour répondre à nos attentes (c'est-à-dire sans parcourir la méthode et le nom), le for of dans ES6 est encore meilleur.

Array.prototype.method=function(){
  console.log(this.length);
}
var myArray=[1,2,4,5,6,7]
myArray.name="数组";
for (var value of myArray) {
  console.log(value);
}
Copier après la connexion

Rappelez-vous que for in parcourt l'index (c'est-à-dire le nom de la clé) du tableau, tandis que for of parcourt les valeurs des éléments du tableau.

for of parcourt uniquement les éléments du tableau, mais n'inclut pas la méthode d'attribut prototype et le nom d'index du tableau

Lors de la traversée d'un objet, for in est généralement utilisé pour parcourir la clé nom de l'objet

Object.prototype.method=function(){
  console.log(this);
}
var myObject={
  a:1,
  b:2,
  c:3
}
for (var key in myObject) {
  console.log(key);
}
Copier après la connexion

pour in peut accéder à la méthode prototype de myObject. Si vous ne souhaitez pas parcourir la méthode prototype et les propriétés, vous pouvez la juger dans la boucle. peut déterminer si une certaine propriété est une propriété d'instance de l'objet

for (var key in myObject) {
  if(myObject.hasOwnProperty(key)){
    console.log(key);
  }
}
Copier après la connexion

Vous pouvez également utiliser Object.keys(myObject) d'ES5 pour obtenir un tableau de propriétés d'instance d'un objet, à l'exclusion des méthodes et propriétés prototypes.

Object.prototype.method=function(){
  console.log(this);
}
var myObject={
  a:1,
  b:2,
  c:3
}
Object.keys(myObject).forEach(function(key,index){<br>  console.log(key,myObject[key])<br>})
Copier après la connexion


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!