A function that does this:
range(10) // -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(0, 10) // -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(0, 10, 2) // -> [0, 2, 4, 6, 8]
Let's do it in < 100 bytes!
let range=(s,e,n=1)=>(e==null?(e=s,s=0):0,Array.from({length:Math.abs(~~(e-s)/n)},(v,i)=>i?i*n:s))
Here's a readable version:
let rangeReadable = (start, end, step = 1) => {
return (
end == null ? (end = start, start = 0) : 0,
Array.from({ length: Math.abs(~~(end - start) / n) }, (v, i) => i ? i * step : step)
)
}