「for」「while」「forEach」の使い分けを解説【JavaScript】

新人エンジにゃー
ループの処理って「for」「while」「forEach」の結局どれを使ったらいいにゃ?使い分けが知りたいにゃ。

 

 

「for」「while」「forEach」の使い分けを解説しています。

この記事を読めば、基本的な構文と具体例・使うべきタイミングを理解できるので参考にしてみてください。

 

・「for」「while」「forEach」を使い分け
・基本的な構文と具体例
・応用の使い方

 

スポンサーリンク

「for」「while」「forEach」の使い分けを解説【JavaScript】

 

以下の表のように使い分けできます。

種類タイミング
for・具体的な回数だけ繰り返す必要がある場合
・インデックスが必要な場合
while・条件が満たされている間だけ繰り返す必要がある場合
・具体的な回数が不確定な場合
forEach・配列の各要素に同じ処理を適用する場合
・要素のインデックスや元の配列が必要な場合

 

文字だけでは分かりずらいので、具体的なコードを見てみましょう。

 

forの使い方

 

基本の構文

for (初期化式; 条件式; 更新式) {
// ループ内で実行されるコード
}

 

例文

for (let i = 0; i < 5; i++) {
console.log("結果:",i);
}

// コンソール
結果:0
結果:1
結果:2
結果:3
結果:4

このように「具体的な指示(5よりも小さい数字の時)でループさせたい」場合や、インデックスが必要な時にforを使います。

条件を変更することで様々な応用でループさせることもできます。

 

 

インデックスを逆順にする

const array = [10, 20, 30];

for (let i = array.length - 1; i >= 0; i--) {
 console.log(`Index: ${i}, Value: ${array[i]}`);
}

// コンソール
Index: 2, Value: 30 
Index: 1, Value: 20 
Index: 0, Value: 10 

※i の初期値を array.length – 1 に設定し、i– で逆順にループさせる

 

偶数のみを処理する

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

for (let i = 0; i < numbers.length; i++) {
 if (numbers[i] % 2 === 0) {
 console.log(`Even Number: ${numbers[i]}`);
 }
}

// コンソール
Even Number: 2 
Even Number: 4 
Even Number: 6 
Even Number: 8 
Even Number: 10 

※if (numbers[i] % 2 === 0) の条件で偶数のみを処理

 

特定の条件を満たすまで繰り返す

let i = 0;

for (; i < 10; i++) {
 if (i === 5) {
 break; // ループを抜ける
 }
 console.log(`Value: ${i}`);
}

// コンソール
Value: 0 
Value: 1 
Value: 2 
Value: 3 
Value: 4 

※i の初期化をループ外に持ち出し、for ループ内で特定の条件(ここでは i === 5)までループさせる

 

wihleの使い方

 

基本の構文

while (条件式) { 
 // ループ内で実行されるコード
}

 

例文

let i = 0;
while (i < 5) {
 console.log(i);
 i++;
}

// コンソール
0
1
2
3
4

行っている処理は前述したforとまったく同じですが、条件がtureであれば永遠にループするので具体的な回数が不明な場合に使います。

 

ランダムな数が特定の範囲になるまでループ

let randomNumber;

while (randomNumber < 5 || randomNumber > 10) {
 randomNumber = Math.floor(Math.random() * 15) + 1;
}

※while ループを使用してランダムな数が5から10の範囲になるまでループさせる(5から10の範囲になったら終了する)

 

ユーザーが正しいパスワードを入力するまでループ

const correctPassword = 'secure123';
let userInput;

while (userInput !== correctPassword) {
userInput = prompt('Enter the password:');
}

console.log('Login successful!');

※パスワードとUSERが入力したワードが異なっていたらループさせて、正しければ「Login successful!」を出力する

 

 

forEachの使い方

 

基本の構文

array.forEach(function(element) {
 // 配列の各要素に対して実行されるコード
});

 

例文

const numbers = [1, 2, 3, 4, 5];

numbers.forEach(function(number) {
 console.log(number);
});

// コンソール
1
2
3
4
5

配列の各要素に対して関数を適用、コールバック関数の引数には、要素の他にインデックスや元の配列も受け取れる。

配列の各要素に対して同じ処理を適用したい場合や、インデックスや元の配列が必要な場合に使います。

 

 

各要素を2倍にして新しい配列を作成

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = [];

numbers.forEach((element) => {
 doubledNumbers.push(element * 2);
});

console.log(doubledNumbers);

// コンソール
(5) [2, 4, 6, 8, 10]
0: 2
1: 4
2: 6
3: 8
4: 10

※配列のすべての値に対して処理されるので、forEach を使用して各要素を2倍にして新しい配列を作成している

 

配列の各要素をログに表示

const fruits = ['apple', 'banana', 'orange'];

fruits.forEach((fruit, index) => {
 console.log(`Index ${index}: ${fruit}`);
});

// コンソール
Index 0: apple 
Index 1: banana 
Index 2: orange 

※indexも取得して各要素と一緒に出力

 

奇数だけをフィルタリング

const numbers = [1, 2, 3, 4, 5];
const oddNumbers = [];

numbers.forEach((element) => {
 if (element % 2 !== 0) {
 oddNumbers.push(element);
 }
});

console.log(oddNumbers);

// コンソール
(3) [1, 3, 5]
0: 1
1: 3
2: 5

奇数だけをフィルタリングして新しい配列を作成

 

 

まとめ

 

最後にまとめです。

種類タイミング
for・具体的な回数だけ繰り返す必要がある場合
・インデックスが必要な場合
while・条件が満たされている間だけ繰り返す必要がある場合
・具体的な回数が不確定な場合
forEach・配列の各要素に同じ処理を適用する場合
・要素のインデックスや元の配列が必要な場合

 

ざっくり覚えるのであれば、

 

forはループしたい回数がある時

whileはループしたい回数が決まっていない時

forEachは配列全てに対して処理したい時

 

 

以上、参考になれば幸いです。

最後までお読みいただきありがとうございました。

スポンサーリンク
NO IMAGE

晴耕雨読

『晴れた日には畑を耕し雨の日には本を読む』そんな生活を目指すブログです