Ramda 的 range()
只提供 begin
與 end
兩個 Argument,但大部分 Library 還提供了第三個 Argument:step
,我們也可以自行實作之。
Version
macOS Mojave 10.14.5
VS Code 1.36.1
Quokka 1.0.236
ECMAScript 2015
Wink-fp 0.1.13
Array.from()
let range3 = begin => end => step => Array.from({ length: (end - begin)/step + 1}, (_, i) => begin + (i * step));
range3(1)(10)(2); // ?
當牽涉 step
之後,array 的 length 就不只有 n
,而是由 begin
、end
與 step
共同決定,且 map function 也包含 step
。
Wink-fp
import { range3 } from 'wink-fp';
range3(1)(10)(2); // ?
Wink-fp 已經內建 range3()
,可直接使用。
range3()
Number -> Number -> Number -> [Number]
提供起始值、結束值與 step 值產生 sequence
Number
:起始值
Number
:結束值
Number
:step 值
[Number]
:回傳 sequence
Conclusion
- 之前要實作
range()
沒這麼簡單,但透個Array.from()
,只要 1 行即可完成