目的
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を設定しています。