この記事では、JavaScript の for...of ループについて詳しく説明します。一定の参考値があるので、困っている友達は参考にしていただければ幸いです。
#for...of ステートメントによって作成されたループは、オブジェクトを横断できます。 ES6 で導入された for...of は、他の 2 つのループ ステートメント for...in および forEach() を置き換えることができ、この新しいループ ステートメントは新しい反復プロトコルをサポートします。 for...of を使用すると、配列、文字列、マップ、セットなどの反復可能なデータ構造を反復処理できます。
for (variable of iterable) { statement }
const iterable = ['mini', 'mani', 'mo']; for (const value of iterable) { console.log(value); } // Output: // => mini // => mani // => mo
結果は、
iterable 配列内の各値を出力します。
オブジェクトは key-value
ペアを保持します。オブジェクトとプリミティブ値は、key
または value
として扱うことができます。 Map
オブジェクトは、挿入メソッドに従って要素を移動します。つまり、for...of
は、各反復で kay-value
ペアの配列を返します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false">const iterable = new Map([[&#39;one&#39;, 1], [&#39;two&#39;, 2]]);
for (const [key, value] of iterable) {
console.log(`Key: ${key} and Value: ${value}`);
}
// Output:
// => Key: one and Value: 1
// => Key: two and Value: 2</pre><div class="contentsignin">ログイン後にコピー</div></div>
オブジェクトを使用すると、任意のタイプの一意の値 (プリミティブ値またはオブジェクト) を保存できます。 Set
Object は単なる値のコレクションです。 Set
要素の繰り返しは挿入順序に基づいており、各値は 1 回だけ出現します。同じ要素を持つ Set
を複数回作成した場合でも、それは単一の要素とみなされます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false">const iterable = new Set([1, 1, 2, 2, 1]);
for (const value of iterable) {
console.log(value);
}
// Output:
// => 1
// => 2</pre><div class="contentsignin">ログイン後にコピー</div></div>
作成した
には複数の 1
と 2
がありますが、トラバーサル出力は 1
と ## のみです#2。
String
const iterable = 'javascript'; for (const value of iterable) { console.log(value); } // Output: // => "j" // => "a" // => "v" // => "a" // => "s" // => "c" // => "r" // => "i" // => "p" // => "t"
index
) にある文字を出力します。Arguments オブジェクト
function args() { for (const arg of arguments) { console.log(arg); } } args('a', 'b', 'c'); // Output: // => a // => b // => c
args()
関数に渡された引数を受け取ります。したがって、20 引数を
args() 関数に渡すと、
20 引数が出力されます。
オブジェクト、配列、関数を
args()
function fn(){ return 'functions'; } args('a', 'w3cplus', 'c',{'name': 'airen'},['a',1,3],fn()); // Output: // => "a" // => "w3cplus" // => "c" // => Object { // => "name": "airen" // => } // => Array [ // => "a", // => 1, // => 3 // => ] // => "functions"
Generatorsfunction* generator(){ yield 1; yield 2; yield 3; }; for (const g of generator()) { console.log(g); } // Output: // => 1 // => 2 // => 3
ここをクリックしてください
。 イテレータを閉じるJavaScript には、ループを終了する 4 つの既知のメソッドが用意されています: break
、Continue、
return、
throw。例を見てみましょう:
const iterable = ['mini', 'mani', 'mo']; for (const value of iterable) { console.log(value); break; } // Output: // => mini
この例では、
break キーワードを使用してループを終了し、mini のみを出力します。
const obj = { fname: 'foo', lname: 'bar' }; for (const value of obj) { // TypeError: obj[Symbol.iterator] is not a function console.log(value); }
ここでは、
for...of を obj## に試みるときに、通常のオブジェクト obj
を定義します。エラーが報告されます: TypeError: obj[Symbol.iterator] は関数ではありません
。 配列のようなオブジェクトを配列に変換できます。オブジェクトには
length
プロパティがあり、その要素にはインデックスを付けることができます。例を見てみましょう:
const obj = { length: 3, 0: 'foo', 1: 'bar', 2: 'baz' }; const array = Array.from(obj); for (const value of array) { console.log(value); } // Output: // => foo // => bar // => baz
Array.from()
このメソッドは、配列のような (Array-lik) オブジェクトまたは反復可能なオブジェクトから新しい配列インスタンスを作成します。
#…の
#vs.<span style="font-size: 20px;"> </span>…の
for...in
ループでは、オブジェクト内のすべての列挙可能なプロパティが走査されます。 Array.prototype.newArr = () => {}; Array.prototype.anotherNewArr = () => {}; const array = ['foo', 'bar', 'baz']; for (const value in array) { console.log(value); } // Outcome: // => 0 // => 1 // => 2 // => newArr // => anotherNewArr
for...in配列で宣言された値を列挙できるだけでなく、コンストラクターのプロトタイプから継承された非列挙プロパティを検索することもできます。上の例のように、
newArr
anotherNewArr を入力して出力します。
for...of
可以对数组和对象等做更具体的操作,但并不表示包括所有对象。
注意:任何具有Symbol.iterator
属性的元素都是可迭代的。
Array.prototype.newArr = function() {}; const array = ['foo', 'bar', 'baz']; for (const value of array) { console.log(value); } // Outcome: // => foo // => bar // => baz
for...of
不考虑构造函数原型的不可枚举属性。它只需要查找可枚举属性并将其打印出来。
理解for...of
循环在开发过程中的用法,可以节省很多时间。希望本文能帮助您理解和编写JavaScript开发中的更好的循环结构。从而让你编码更快乐!
相关免费学习推荐:js视频教程
以上がJS の for...of ループについて詳しく学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。