JavaScript ステートメントの一般的な for ループの詳細な説明

JavaScript ステートメントの一般的な for ループの詳細な説明

JavaScript には、for、for in、for of、forEach ループなど、多くのループ ステートメントがあります。今日は、Array、Object、Set (ES6)、Map (ES6) の 4 つのデータ構造のループ ステートメントのサポートと違いを比較します。

4つの新しいテストデータタイプを作成する

arr = [1, 2, 3, 4, 5, 6]とします。
obj = { a: 1, b: 2, c: 3 } とします。
map = new Map([['a', 'a1'], ['b', 'b2'], ['c', 'c3']]);
set = new Set(['a', 'b', 'c']);

1 対

通常の for ループは配列でも使用できます。 配列を走査する場合、配列の添字インデックスを走査し、添字を通じて値を取得します。

for (let i = 0; i < arr.length; i++) { // i は添え字(インデックス)
  コンソールログ(i)
  コンソールログ(arr[i])
}

2 で

for in は配列とオブジェクトの両方で使用できます。プロトタイプのプロパティもループアウトされることに注意してください。

配列

arr = [1, 2, 3, 4, 5, 6]とします。
配列.プロトタイプ.a = "1"

for (let i in arr) { // i は添え字(インデックス)
  コンソールログ(i)
  コンソールログ(arr[i])
}

プロトタイプもループアウトされていることがわかりますが、これは必要なことではありません。hasOwnProperty を使用してプロトタイプのプロパティをフィルター処理できます。

arr = [1, 2, 3, 4, 5, 6]とします。
配列.プロトタイプ.a = "1"

for (let i in arr) { // i は添え字(インデックス)
  もし(arr.hasOwnProperty(i)) {
    コンソールログ(i)
    コンソールログ(arr[i])
  }
}

物体

obj = { a: 1, b: '2', c: 3 } とします。
オブジェクト.プロトタイプ.d = 4

for (let key in obj) { // keyはキーです console.log(key)
  console.log(obj[キー])
}

Object にも同じ問題があります。プロトタイプ プロパティもループされ、プロトタイプのプロパティも hasOwnProperty を通じてフィルター処理されます。

for (let key in obj) { // key はキーです if (obj.hasOwnProperty(key)) {
    console.log(キー)
    console.log(obj[キー])
  }
}

3 の

for of は、Array、Object、Set、Map で使用できます。

配列

配列は本質的にオブジェクトなので、暗黙のプロトタイプ (__proto__) で定義されたメソッドを見つけることができます。

for (let key of arr.keys()) { // keyは添え字です console.log(key)
}
for (let value of arr) { // valueは値です console.log(value)
}
for (let value of arr.values()) { // valueは値です console.log(value)
}
for (let [key, value] of arr.entries()) { // キーは添え字、値は値、console.log(key,value)
}

物体

for (let [key, value] of Object.entries(obj)) { // キーは添え字、値は値、console.log(key, value)
}

セット

Setには重複がないので、キーと値は一貫しており、次の4つの出力は一貫していることを意味します。

for (let key of set.keys()) {  
  console.log(キー)
}
for (let 値のセット) {     
  console.log(値)
}
for (let 値 set.values()) { 
  console.log(値)
}
for (let [キー, 値] of set.entries()) { 
  console.log(キー、値)
}

地図

(map.keys() のキーを取得) { 
  console.log(キー)
}
for (マップの値) {     
  console.log(値)
}
for (map.values() の値を取得) { 
  console.log(値)
}
map.entries() の (let [キー, 値]) { 
  console.log(キー、値)
}

ループから抜け出すには break および continue ステートメントを使用し、関数本体から戻るには return を使用します。

for (let key of arr.keys()) { // キーは添え字です if (key == 3) {
    戻る
  }
  console.log(キー)
}
for (let key of arr.keys()) { // キーは添え字です if (key == 3) {
    壊す
  }
  console.log(キー)
}
for (let key of arr.keys()) { // キーは添え字です if (key == 3) {
    続く
  }
  console.log(キー)
}

4 それぞれ

forEach ループは、Array、Set、Map で使用できます。ただし、このメソッドでは、break または continue ステートメントを使用してループから抜け出すことも、return を使用して関数本体から戻ることもできません。

配列

arr.forEach((値、インデックス) => {
  console.log(値、インデックス)
})

セット

set.forEach((値、キー) => {
  console.log(値、キー)
})

地図

map.forEach((値、キー) => {
  console.log(値、キー)
})

中断、継続、戻る

プロンプトを表示するには続行を使用します

不正な継続ステートメント: 周囲の反復ステートメントがありません

breakを使用すると

不正なbreak文

returnを使用すると、戻らずにループが継続されます。

5 結論

通常の for ループは配列でも使用できます。配列を走査する場合、配列の添字インデックスを走査し、添字を通じて値を取得します。 for in は配列とオブジェクトの両方で使用できます。ただし、プロトタイプのプロパティもループアウトされることに注意してください。for と of は、Array、Object、Set、Map で使用できます。 break、continue、return も使用できます。forEach ループは、Array、Set、Map で使用できます。ただし、このメソッドでは、break または continue ステートメントを使用してループから抜け出すことも、return を使用して関数本体から戻ることもできません。

JavaScript 文でよく使われる for ループの詳しい説明はこれで終わりです。js for ループに関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript における 3 つの for ループ ステートメントの使用の概要 (for、for...in、for...of)
  • JavaScript ではおそらく switch 文を使う必要はない
  • JavaScript の条件文の最適化手法の概要
  • Pythonでjsステートメントを実行する方法
  • JavaScriptステートメントを理解するのに役立つ記事

<<:  Win2008 R2 mysql 5.5 zip 形式 mysql のインストールと設定

>>:  nginx プロキシでの複数の 302 応答の解決策 (nginx Follow 302)

推薦する

Ubuntu 18.04 システムでの Redis および phpredis 拡張機能のインストールと設定の詳細な説明

この記事では、Ubuntu 18.04 に Redis と phpredis 拡張機能をインストール...

jQueryアニメーションを理解するのに役立つ記事

目次1. 要素の表示と非表示を制御する show() hide() 2. 要素の透明度を制御する f...

Tomcat の構成と最適化ソリューションの詳細な説明

サービス.xml Server.xml 構成ファイルは、コンテナー全体を構成するために使用されます。...

Excel をインポートするときに js で時間を変換する正しい方法について

目次1. 基本2. 問題の説明3. 解決策付録: js を使用して Excel の日付形式を変換する...

Win2008 R2 mysql 5.5 zip 形式 mysql のインストールと設定

Win2008 R2 zip形式のMySQLのインストールと設定1. Baidu MySQL 5.6...

Win10 での MySQL 8.0.15 のインストールと設定のチュートリアル

最近私が学んでいるのは MySQL の知識なので、MySQL をインストールすることが非常に重要です...

HTML テーブルタグチュートリアル (46): テーブルフッタータグ

<tfoot> タグは、テーブル フッターのスタイルを定義するために使用されます。基本構...

バックエンド管理システムを構築するためのvue-element-adminの実装手順

最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...

W3C チュートリアル (6): W3C CSS アクティビティ

スタイル シートは、ドキュメントの表示方法、発音方法、または入力方法を記述します。スタイル シートは...

JavaScriptはPromiseを使用して複数の繰り返しリクエストを処理します

1. なぜこの記事を書くのですか?重複リクエストの処理に関する記事をたくさん読んだことがあるでしょう...

Python MySQL データベース テーブルの変更とクエリ

Python は MySQL に接続してデータベース テーブルを変更およびクエリします。 pytho...

MySQLの文字列インターセプト関連関数の概要

この記事では、MySQL の文字列インターセプト関連の機能を紹介します。具体的な内容は以下のとおりで...

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

CSS3 を使って本のページめくり効果を実現するサンプルコード

重要なポイント: 1. CSS3 3Dアニメーションをマスターする2. ページめくり後のページ内容の...

mysql 簡単な操作例を表示

この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...