JavaScript で N 回ループ
はじめに
Ruby の 5.times のように、JavaScript で簡単に指定回数(N回)のループを行う方法を調べた。
TL;DR
- スプレッド構文(
...)を使う[...Array(10)].forEach,[...Array(10)].map, etc
Array.fillを使うArray(10).fill().forEach, etc
Array.fromを使うArray.from({ length: 10 }).forEach, etc
- スプレッド構文,
Array.fillは IE 非対応なので注意 (2020/01/10 現在)
目次
詳細
N 回ループして forEach やら map やらを使いたいことがあったので調べた。
(下記のように for 文使えば実現できるんだけど、もっと楽がしたかった)
1 | let ary = []; |
スプレッド構文を使う
参考: JavaScriptで指定したN回分ループする - Qiita
スプレッド構文を使って [...Array(5)].xxxx (xxxx は forEach とか map とか) をすると、比較的簡単に N 回ループを実現できる。
1 | [...Array(10)].forEach(() => console.log('hello')); |
forEach などの第一引数には何も入っていない(undefined)ため、インデックスを利用したい場合には第二引数を使う。
※forEach に標準で用意されている引数。
1 | // NG |
Array.fill を使う
スプレッド構文わかりにくいとか、使いにくいとか言う人向けの別のやり方1。
Array.fill を使う。
1 | Array(10).fill().forEach((_, i) => console.log('hello')); |
Array(10).fill() の戻り値は以下。
1 | Array(10).fill(); |
Array.from を使う
スプレッド構文わかりにくいとか、使いにくいとか言う人向けの別のやり方2。
Array.from を使う。
1 | Array.from({ length: 10 }).forEach((_, i) => console.log('hello')); |
Array.from({ length: 10 }) の戻り値も Array(10).fill() と同じく undefined の配列。
1 | Array.from({ length: 10 }); |
まとめ
- スプレッド構文(
...)を使う[...Array(10)].forEach,[...Array(10)].map, etc
Array.fillを使うArray(10).fill().forEach, etc
Array.fromを使うArray.from({ length: 10 }).forEach, etc
- スプレッド構文,
Array.fillは IE 非対応なので注意 (2020/01/10 現在)
その他・メモ
スプレッド構文についての詳しいことは、下記を見ると良さそう。
参考文献
- JavaScriptで指定したN回分ループする - Qiita
- スプレッド構文 - JavaScript | MDN
- Array - JavaScript | MDN
- Array.from() - JavaScript | MDN
- Array.prototype.fill() - JavaScript | MDN
- javascript - Is there a mechanism to loop x times in ES6 (ECMAScript 6) without mutable variables? - Stack Overflow
- 【JavaScript】スプレッド構文の便利な使い方まとめ - Qiita
関連記事
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- JavaScript で画像をローカルにダウンロード
- JavaScript で複数画像を zip に圧縮してローカルにダウンロード
- HTML img タグで画像が 404 エラーのときに代替画像を表示する方法
- Laravel で現在の URL 取得方法まとめ
- Laravel で Cookie を使う(参照/設定/削除)