2021-08-17 16:06:37 +00:00
|
|
|
|
## Use
|
|
|
|
|
|
|
|
|
|
Examples (edge cases can be found in each function's documentation):
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
// Create iterables
|
|
|
|
|
const i1 = iarray([1, 2, 3]); // 1 2 3
|
|
|
|
|
const i2 = isingle(4); // 4
|
|
|
|
|
const i3 = irecur(0, (x) => x - 1); // 0 -1 -2 -3 -4 ...
|
|
|
|
|
const i4 = irange(5); // 0 1 2 3 4
|
|
|
|
|
const i5 = irange(5, 1, 2); // 1 3 5 7 9
|
|
|
|
|
const i6 = istep(4, iarray([1, 10, 1, -1])); // 4 5 15 16 15
|
|
|
|
|
const i7 = irepeat(2); // 2 2 2 2 2 ...
|
|
|
|
|
|
|
|
|
|
// Consume iterables
|
|
|
|
|
iforeach(i1, console.log);
|
|
|
|
|
ifirst(i6); // 4
|
|
|
|
|
ifirstmap(i1, (x) => x > 1 ? -x : null); // -2
|
|
|
|
|
imaterialize(i1); // [1, 2, 3]
|
|
|
|
|
ilength(i1); // 3
|
|
|
|
|
iat(i5, 3); // 7
|
|
|
|
|
ireduce(i1, (a, b) => a + b, 0); // 6
|
|
|
|
|
isum(i1); // 6
|
|
|
|
|
icat(iarray(["a", "b", "c"])); // abc
|
|
|
|
|
imin(i1); // 1
|
|
|
|
|
imax(i1); // 3
|
|
|
|
|
|
|
|
|
|
// Transform iterables
|
|
|
|
|
iloop(i1); // 1 2 3 1 2 3 ...
|
|
|
|
|
iskip(i3, 2); // -2 -3 -4 -5 -6 ...
|
|
|
|
|
imap(i1, (x) => x * 2); // 2 4 6
|
|
|
|
|
ifilter(i3, (x) => x % 4 == 0); // 0 -4 -8 -12 ...
|
2021-08-26 21:36:25 +00:00
|
|
|
|
imapfilter(i1, (x) => x != 4 ? x * 2 : null); // 2 6
|
2021-08-17 16:06:37 +00:00
|
|
|
|
ipartition(i3, (x) => x % 4 == 0); // [0 -4 -8 ..., -1 -2 -3 -5 ...]
|
|
|
|
|
iunique(iarray([1, 4, 2, 4, 3, 1, 5])); // 1 4 2 3 5
|
|
|
|
|
|
|
|
|
|
// Combine iterables
|
|
|
|
|
ichain(i1, i2); // 1 2 3 4
|
|
|
|
|
ichainit(iarray([i1, i2])); // 1 2 3 4
|
|
|
|
|
icombine(iarray([0, 1]), iarray(["a", "b"])); // [0, "a"] [0, "b"] [1, "a"] [2, "b"]
|
|
|
|
|
izip(iarray([0, 1]), iarray(["a", "b"])); // [0, "a"] [1, "b"]
|
|
|
|
|
ialternate(iarray([0, 1]), iarray(["a", "b"])); // 0 "a" 1 "b"
|
|
|
|
|
|
|
|
|
|
// Type filter (result is a typed iterable)
|
|
|
|
|
ifiltertype(iarray([1, "a", 2, "b"]), (x): x is number => typeof x == "number"); // 1 2
|
|
|
|
|
class A {}
|
|
|
|
|
class B {}
|
|
|
|
|
ifilterclass(iarray([new A(), new B(), new A()]), A); // A A
|
|
|
|
|
```
|