range
返回一个按照一定规律生成的数组, 可以用于计数、生成数列等场景
基本用法
第一个和第二个参数表示起始值和结束值, 第三个参数是配置项
- 如果第二个参数为空, 则返回一个从0到起始值的数组
- 如果第三个参数为空, 则返回一个从起始值到结束值的数组
- 如果第三个参数为数字, 则视为步长
- 如果第三个参数为对象, 则可以设置以下属性
step
: 步长value
: 返回的数组每一项都将是这个值getter
: 返回的数组每一项的计算方法, 不填默认返回数字
js
// 只传一个目标值
range(10) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(-10) // [0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10]
// 不传第三个参数
range(1, 10) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range(10, 1) // [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
// 第三个参数为数字
range(1, 10, 2) // [1, 3, 5, 7, 9]
range(10, 0, 2) // [10, 8, 6, 4, 2, 0]
// 第三个参数为对象
range(0, 6, { step: 2 }) // [0, 2, 4, 6]
range(0, 6, { step: 2, value: 'test' }) // ['test', 'test', 'test', 'test']
range(0, 6, { step: 2, getter: (i) => i * 10 }) // [0, 20, 40, 60]
示例
以下例子展示了如何使用 range
输出一个斐波那契数列
js
const fib = range(0, 10, { getter: (i, existList) => (i < 2 ? i : existList[i - 1] + existList[i - 2]) })
// fib = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]