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

Jul 24, 2017 pm 01:32 PM

配列の走査には通常、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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

例JSONファイルの例 例JSONファイルの例 Mar 03, 2025 am 12:35 AM

例JSONファイルの例

8見事なjQueryページレイアウトプラグイン 8見事なjQueryページレイアウトプラグイン Mar 06, 2025 am 12:48 AM

8見事なjQueryページレイアウトプラグイン

独自のAjax Webアプリケーションを構築します 独自のAjax Webアプリケーションを構築します Mar 09, 2025 am 12:11 AM

独自のAjax Webアプリケーションを構築します

' this' JavaScriptで? ' this' JavaScriptで? Mar 04, 2025 am 01:15 AM

' this' JavaScriptで?

ソースビューアーでjQueryの知識を向上させます ソースビューアーでjQueryの知識を向上させます Mar 05, 2025 am 12:54 AM

ソースビューアーでjQueryの知識を向上させます

モバイル開発用のモバイルチートシート10個 モバイル開発用のモバイルチートシート10個 Mar 05, 2025 am 12:43 AM

モバイル開発用のモバイルチートシート10個

See all articles