Skip to content

range

创建用于迭代的范围

165 bytes
since v12.1.0

使用方法

给定开始、结束、值和步长,返回一个生成器,按步长从开始到结束产生值。用于用 for of 替换 for (let i = 0)。Range 将返回一个生成器,for of 将逐一调用,因此创建大范围是安全的。

接口与 list 相同。

向 Python 的 range 功能致敬

import * as _ from "radashi";
_.range(3); // 产生 0, 1, 2, 3
_.range(0, 3); // 产生 0, 1, 2, 3
_.range(0, 3, "y"); // 产生 y, y, y, y
_.range(0, 3, () => "y"); // 产生 y, y, y, y
_.range(0, 3, (i) => i); // 产生 0, 1, 2, 3
_.range(0, 3, (i) => `y${i}`); // 产生 y0, y1, y2, y3
_.range(0, 3, obj); // 产生 obj, obj, obj, obj
_.range(0, 6, (i) => i, 2); // 产生 0, 2, 4, 6
for (const i of _.range(0, 200, 10)) {
console.log(i); // => 0, 10, 20, 30 ... 190, 200
}
for (const i of _.range(0, 5)) {
console.log(i); // => 0, 1, 2, 3, 4, 5
}

签名

range 函数可以用不同的参数做很多事情。

range(size)

当给定单个参数时,它被视为 size。返回一个从 0 到 size 产生值的生成器。

_.range(3); // 产生 0, 1, 2, 3

range(start, end)

当给定两个参数时,它们被视为 startend。返回一个从 startend 产生值的生成器。

_.range(2, 6); // 产生 2, 3, 4, 5, 6

range(start, end, value)

当给定第三个参数时,它被视为在生成器中产生的 value。如果 value 是函数,它将被调用(带有索引参数)来创建每个值。

_.range(2, 4, {}); // 产生 {}, {}, {}
_.range(2, 4, null); // 产生 null, null, null
_.range(2, 4, (i) => i); // 产生 2, 3, 4

range(start, end, value, step)

当给定第四个参数时,它被视为从 startend 产生值时要跳过的 step 大小。

_.range(2, 4, (i) => i, 2); // 产生 2, 4
_.range(25, 100, (i) => i, 25); // 产生 25, 50, 75, 100