A JavaScript module to iterate between range.
- Bun ^ v1.0.0
- Cloudflare Workers
- Deno >= v1.34.0
π‘οΈ Require Permission
N/A
- NodeJS >= v16.13.0
π― Supported Target
- Cloudflare Workers
- NodeJS
- Install via console/shell/terminal:
- Via NPM
npm install @hugoalh/range-iterator[@<Tag>]
- Via PNPM
pnpm add @hugoalh/range-iterator[@<Tag>]
- Via Yarn
yarn add @hugoalh/range-iterator[@<Tag>]
- Via NPM
- Import at the script (
<ScriptName>.js
):import ... from "@hugoalh/range-iterator";
βΉοΈ Note
Although it is recommended to import the entire module, it is also able to import part of the module with sub path if available, please visit file
package.json
propertyexports
for available sub paths.
π― Supported Target
- Bun
- Deno
- Import at the script (
<ScriptName>.js
):import ... from "npm:@hugoalh/range-iterator[@<Tag>]";
βΉοΈ Note
Although it is recommended to import the entire module, it is also able to import part of the module with sub path if available, please visit file
package.json
propertyexports
for available sub paths.
-
function rangeIterator(start: bigint, end: bigint, step?: RangeIteratorOptions<bigint>["step"]): Generator<bigint>; function rangeIterator(start: number, end: number, step?: RangeIteratorOptions<number>["step"]): Generator<number>; function rangeIterator(start: string, end: string, step?: RangeIteratorOptions<string>["step"]): Generator<string>; function rangeIterator(start: bigint, end: bigint, options?: RangeIteratorOptions<bigint>): Generator<bigint>; function rangeIterator(start: number, end: number, options?: RangeIteratorOptions<number>): Generator<number>; function rangeIterator(start: string, end: string, options?: RangeIteratorOptions<string>): Generator<string>;
-
interface RangeIteratorOptions<T extends RangeIteratorAcceptType> { /** * Whether to exclusive end. * @default false */ endExclusive?: boolean; /** * Step of the decrement/increment of the iterate. * @default 1n // Big integer. * @default 1 // Number/String. */ step?: RangeIteratorIndexType<T>; }
-
type RangeIteratorAcceptType = bigint | number | string;
-
type RangeIteratorIndexType<T extends RangeIteratorAcceptType> = T extends bigint ? bigint : number;
-
Array.from(rangeIterator(1, 9)); //=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
-
Array.from(rangeIterator(1n, 9n, { endExclusive: true })); //=> [1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n]
-
Array.from(rangeIterator(1, 9, { step: 0.5 })); //=> [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9]
-
Array.from(rangeIterator("a", "z")); //=> ["a", "b", "c", ... +20 ..., "x", "y", "z"]
-
Array.from(rangeIterator(9, 1)); //=> [9, 8, 7, 6, 5, 4, 3, 2, 1]
-
Array.from(rangeIterator(9n, 1n, { endExclusive: true })); //=> [9n, 8n, 7n, 6n, 5n, 4n, 3n, 2n]
-
Array.from(rangeIterator(9, 1, { step: 0.5 })); //=> [9, 8.5, 8, 7.5, 7, 6.5, 6, 5.5, 5, 4.5, 4, 3.5, 3, 2.5, 2, 1.5, 1]
-
Array.from(rangeIterator("z", "a")); //=> ["z", "y", "x", ... +20 ..., "c", "b", "a"]