Skip to main content

range function in JavaScript

lodashを参考に,よく使うrangeをより早く実装してみました。

function range (n=0) {
const ret = new Array(n)
for (;n--;) ret[n] = n
return ret
}

いくつかのショートハンドもありますが、 keys()を使うと90%近くも遅くなるらしいです。 また、nを大きくしたところ、map()でも90%ほど遅くなりました。

range(Math.random() * 100 << 0) // Fastest 💪
keys(Math.random() * 100 << 0) // 93% slower 🐢
map(Math.random() * 100 << 0) // 60% slower 🐢
function keys (n=0) {
return [...Array(n).keys()]
}

function map(n=0) {
return [...Array(n)].map((_, i) => i)
}