Help us understand the problem. What is going on with this article?

連続する数字を配列に代入する方法 JavaScript版

More than 1 year has passed since last update.

1, 2, 3, ... みたいに連続する数字を使ってアルゴリズムを工夫したら、 for 文少なく書けますよね。

Ruby には Array(1..3) のように、 .. 演算子を使うことで簡単に書けます。

JavaScript では簡単に書けないのでしょうか?

ES2015での記述を使います。

初級編: for 文を使う

素直な発想をすると、 for 文が理解しやすくて忘れません。

const seq = []

for (let i = 1; i <= 3; i++) {
  seq.push(i)
}

console.log(seq) // [ 1, 2, 3 ]

中級編: function * 文を使う

async / await がデファクトになって、ジェネレータ関数はあまり登場頂くことは少ないのですが、 for 文が登場するので分かりやすいですね。

const seq = [...(function * () {
  for (let i = 1; i <= 3; i++) {
    yield i
  }
})()]

console.log(seq) // [ 1, 2, 3 ]

上級編: 空配列のインデックスを使う

配列を作成する Array(n) コンストラクタを呼び出すと、配列の要素数が n である空の配列を作成します。

console.log(Array(3)) // [ <3 empty items> ]

この空配列のインデックスを繰り返すと、良い感じで連続する数字が取得できます。

const seq = [...Array(3)].map((i, index) => index + 1)

console.log(seq) // [ 1, 2, 3 ]

または、 Array.prototype.keys() を使う方法があります。

const seq = [...Array(3).keys()].map(i => i + 1)

console.log(seq) // [ 1, 2, 3 ]
tabian
画像認識技術を用いて、新しいポスター体験を提供する「ポ写」を開発している全員副業のスタートアップです! エンジニアが自由に、でも真面目に技術に向き合える環境、それは最新技術にとことんこだわれることだと思って日々Qiitaの更新頑張ってます。
https://tabian.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away