series
创建一个数字序列,从起始值到结束值,按指定步长递增。
基础用法
typescript
import { series } from 'radash'
const numbers = series(1, 5)
// [1, 2, 3, 4, 5]
const evenNumbers = series(0, 10, 2)
// [0, 2, 4, 6, 8, 10]
语法
typescript
function series(
start: number,
end: number,
step?: number
): number[]
参数
start
(number): 序列的起始值end
(number): 序列的结束值step
(number, 可选): 步长,默认为1
返回值
返回一个包含从start到end的数字数组,按step递增。
示例
基本序列
typescript
import { series } from 'radash'
console.log(series(1, 5)) // [1, 2, 3, 4, 5]
console.log(series(0, 3)) // [0, 1, 2, 3]
console.log(series(-2, 2)) // [-2, -1, 0, 1, 2]
console.log(series(5, 1)) // [5, 4, 3, 2, 1] (自动递减)
指定步长
typescript
import { series } from 'radash'
console.log(series(0, 10, 2)) // [0, 2, 4, 6, 8, 10]
console.log(series(1, 10, 2)) // [1, 3, 5, 7, 9]
console.log(series(0, 10, 3)) // [0, 3, 6, 9]
console.log(series(10, 0, -2)) // [10, 8, 6, 4, 2, 0]
负数序列
typescript
import { series } from 'radash'
console.log(series(-5, -1)) // [-5, -4, -3, -2, -1]
console.log(series(-10, -1, 2)) // [-10, -8, -6, -4, -2]
console.log(series(-1, -5)) // [-1, -2, -3, -4, -5]
小数序列
typescript
import { series } from 'radash'
console.log(series(0, 1, 0.2)) // [0, 0.2, 0.4, 0.6, 0.8, 1]
console.log(series(1, 2, 0.25)) // [1, 1.25, 1.5, 1.75, 2]
console.log(series(0.1, 0.5, 0.1)) // [0.1, 0.2, 0.3, 0.4, 0.5]
空序列
typescript
import { series } from 'radash'
console.log(series(5, 1, 1)) // [] (无法递增到目标)
console.log(series(1, 5, -1)) // [] (无法递减到目标)
console.log(series(1, 1)) // [1] (起始等于结束)
在循环中使用
typescript
import { series } from 'radash'
// 遍历序列
for (const i of series(1, 5)) {
console.log(`第${i}次迭代`)
}
// 输出:
// 第1次迭代
// 第2次迭代
// 第3次迭代
// 第4次迭代
// 第5次迭代
创建索引数组
typescript
import { series } from 'radash'
const indices = series(0, 4)
console.log(indices) // [0, 1, 2, 3, 4]
// 用于数组操作
const fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry']
const fruitIndices = series(0, fruits.length - 1)
fruitIndices.forEach(index => {
console.log(`${index}: ${fruits[index]}`)
})
创建矩阵索引
typescript
import { series } from 'radash'
const rows = series(0, 2)
const cols = series(0, 3)
// 创建3x4矩阵的索引
for (const row of rows) {
for (const col of cols) {
console.log(`位置 [${row}, ${col}]`)
}
}
生成测试数据
typescript
import { series } from 'radash'
// 生成用户ID
const userIds = series(1, 10)
console.log(userIds) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 生成价格范围
const prices = series(10, 100, 10)
console.log(prices) // [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
// 生成时间戳
const timestamps = series(Date.now(), Date.now() + 86400000, 3600000) // 每小时一个
与map结合使用
typescript
import { series } from 'radash'
// 创建对象数组
const users = series(1, 5).map(id => ({
id,
name: `User ${id}`,
email: `user${id}@example.com`
}))
console.log(users)
// [
// { id: 1, name: 'User 1', email: 'user1@example.com' },
// { id: 2, name: 'User 2', email: 'user2@example.com' },
// { id: 3, name: 'User 3', email: 'user3@example.com' },
// { id: 4, name: 'User 4', email: 'user4@example.com' },
// { id: 5, name: 'User 5', email: 'user5@example.com' }
// ]
创建重复模式
typescript
import { series } from 'radash'
// 创建交替的布尔值
const alternating = series(0, 9).map(i => i % 2 === 0)
console.log(alternating) // [true, false, true, false, true, false, true, false, true, false]
// 创建重复的颜色
const colors = ['red', 'green', 'blue']
const colorPattern = series(0, 9).map(i => colors[i % colors.length])
console.log(colorPattern) // ['red', 'green', 'blue', 'red', 'green', 'blue', 'red', 'green', 'blue', 'red']
注意事项
- 包含结束值: 序列包含结束值
- 自动方向: 如果start大于end且step为正,会自动使用负步长
- 空序列: 如果无法通过指定步长到达结束值,返回空数组
- 浮点数精度: 浮点数运算可能有精度问题
- 性能: 对于大范围序列,考虑内存使用
与其他方法的区别
Array.from({length: n}, (_, i) => i)
: 只能从0开始[...Array(n).keys()]
: 只能从0开始到n-1series()
: 可以指定任意起始和结束值,以及步长
实际应用场景
- 分页: 生成页码序列
- 测试数据: 生成测试用的ID序列
- 图表: 生成坐标轴刻度
- 循环: 替代for循环的索引
- 矩阵操作: 生成矩阵索引