ホームページ  >  記事  >  ウェブフロントエンド  >  for ofとfor inの違いを詳しく解説

for ofとfor inの違いを詳しく解説

黄舟
黄舟オリジナル
2017-07-24 13:32:011373ブラウズ

配列の走査には通常、for ループが使用されます。ES5 を使用する場合、ES5 には、map、filter、some、every、reduce、reduceRight などの配列を走査する機能がありますが、それらの戻り値は異なります。 。ただし、foreach を使用して配列を走査する場合、break を使用してループを中断することはできず、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]);
}

for in を使用しても配列を走査できますが、次の問題が発生します:

1. インデックスは文字列数値であり、幾何学的な操作を直接実行できません

2. 走査順序は内部規則に従っていない可能性があります。実際の配列の順序

3. for in を使用すると、プロトタイプを含む配列の列挙可能なすべてのプロパティがスキャンされます。たとえば、Shangli のプロトタイプ メソッドのメソッドと名前属性

では、オブジェクトの走査には for in の方が適しているため、配列の走査には for in を使用しないでください。

では、for ループを使用することに加えて、期待を達成するために (つまり、メソッドと名前をトラバースせずに) 配列をより簡単かつ正確にトラバースするにはどうすればよいでしょうか? ES6 の for はさらに優れています。

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);
}

for in は配列のインデックス (つまり、キー名) をトラバースし、for of は配列要素の値をトラバースします。

for of は配列内の要素のみを走査し、プロトタイプの属性メソッドと配列のインデックス名は含みません

オブジェクトの走査は通常 for in を使用してオブジェクトのキー名を走査します

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

for in はプロトタイプまで走査できますmyObject のメソッドメソッド、プロトタイプのメソッドとプロパティを走査したくない場合は、 hasOwnPropery メソッドで特定のプロパティがオブジェクトのインスタンス プロパティであるかどうかを判断することもできます。 ES5 の Object.keys (myObject) を通じて、プロトタイプのメソッドとプロパティを除いたオブジェクトのインスタンス プロパティ構成を取得します。

りー

以上がfor ofとfor inの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。