LoginSignup
2
4

More than 5 years have passed since last update.

ES6のSpread Operatorを使った配列の作り方

Last updated at Posted at 2018-01-16

目的

JavaScriptでn未満の整数の配列を作りたい。
できるだけシンプルに書きたい。

Rubyの場合

Range#to_aでシンプルに書けます。

n = 10
(0..n-1).to_a
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

JavaScriptの場合

ES5

for文などを使ったやり方が一般的です。

var n = 10,
    result = [];
for (var i = 0; i < n; i++) {
  result.push(i);
}
// result => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

ES6 (ES2015)

ES6のSpread Operatorを使うとシンプルに書けます。

const n = 10;
[...Array(n).keys()];
// => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

参考

JavascriptでRubyのRange#to_aのような配列を返す方法 - rochefort's blog
Spread syntax - JavaScript | MDN
spread_(...) operator - ECMAScript 6 compatibility table

おまけ

n未満の自然数のうち、3または5で割り切れる数字の合計を計算するプログラム
※引数nは0以上の整数とする。

ES5

function solution(n) {
  var sum = 0;

  for(var i = 1; i < n; i++){
    if(i % 3 === 0 || i % 5 === 0){
      sum += i
    }
  }
  return sum;
}

ES6 (ES2015)

const solution = n => [...Array(n).keys()].filter(i => (i % 3 === 0 || i % 5 === 0)).reduce((a, b) => a + b, 0);

n = 0 のとき、[...Array(n).keys()].filter(i => (i % 3 === 0 || i % 5 === 0))が空配列になってエラーが起こるため、reduceには初期値0を設定しています。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4