TypeScriptでは、for文を使用して、指定した回数だけ反復するループを作成できます。
for文の基本的な文法は以下の通りです。
for (initialization; condition; increment/decrement) {
statement(s)
}
initializationはループ開始前に実行され、通常カウンタ変数を初期化するために使用されます。conditionはループの各反復の前に評価され、conditionが真である限り、ループは実行され続けます。increment/decrementは、ループの各反復の終わりに実行され、通常カウンタ変数を更新するために使用されます。
それでは簡単な例を見てみましょう。
for (let i:number = 0; i < 10; i++) {
console.log(i);
}
この例では、ループ変数iは0で初期化され、繰り返し実行されるたびに1ずつ増加します。ループはiが10未満である限り実行し続けます。
配列の各要素をfor文によって出力する例を見てみましょう。以下の例は配列1,2,3,4,5の要素を出力します。
let myArray = [1, 2, 3, 4, 5];
for (let i = 0; i < myArray.length; i++) {
console.log(myArray[i]);
}
for文をネストして、掛け算の結果を出力する例を見てみましょう。
for (let i = 1; i <= 12; i++) {
for (let j = 1; j <= 12; j++) {
console.log(i + " * " + j + " = " + (i * j));
}
}
for-of文は配列やその他の反復処理可能なオブジェクトの要素を反復処理するために使用します。
let myArray = [1, 2, 3, 4, 5];
for (let item of myArray) {
console.log(item);
}
これは配列1,2,3,4,5の要素を出力します。
また、for-of文は文字列の反復処理などにも使えます。
let myString = "hello";
for (let char of myString) {
console.log(char);
}
これは配列の例と同じように、myStringの文字を1つずつ出力します。
for-of文のもう一つの便利な使い方は、マップを使ったものです。
let myMap = new Map([["a",1], ["b",2], ["c",3]]);
for (let entry of myMap) {
console.log(entry);
}
これは、Mapのキーと値のペアを[key,value]という形式で出力します。
注意すべきは、for-ofループはオブジェクトのプロパティに対して反復処理を行わないことです。オブジェクトのプロパティに対して反復処理を行いたい場合は、for-inステートメントを使用する必要があります。
TypeScriptのfor-in文は、オブジェクトのプロパティを繰り返し処理するために使用されます。配列などの反復可能なオブジェクトの要素に対して反復処理を行うfor-ofステートメントと似ているため注意が必要です。
let myObject = {a: 1, b: 2, c: 3};
for (let key in myObject) {
console.log(key, myObject[key]);
}
このコードは、myObjectのキーと値のペアを一つずつ出力します。
for-in文はオブジェクトを任意の順序で反復処理するので、反復処理で順序を確保したい場合は、オブジェクトを配列に変換し、その配列に対して反復処理を行い、その後にsortを使う必要がある点に注意が必要です。
実行の流れを制御するために、continueとbreakキーワードをforループ内で使用することができます。
continueキーワードは、ループの現在の反復を早期に終了させ、次の反復を開始させます。一方、breakキーワードを使用すると、ループは直ちに終了し、残りの反復は実行されません。
それでは、continueとbreakをforループで使用する例を見てみましょう。
for (let i = 0; i < 10; i++) {
if (i === 5) {
continue;
}
console.log(i);
if (i === 7) {
break;
}
}
この例では、iが5のときcontinue文が実行され、現在の反復が終了し、次の反復が開始されます。iが7のときbreak文が実行され、ループが終了し、残りの繰り返しは実行されません。したがって出力される値は0, 1, 2, 3, 4, 6, 7のみです。
Note: for文については、CS基礎/中級/制御フローで詳しく学習できます。