# @utilx/iterator

> ```bash npm install @typeshell/iterator-utils --save ```

Latest version **0.0.3** (published 2019-04-05) · ISC license · 0 weekly downloads

## Install

```sh
npm install @utilx/iterator
pnpm add @utilx/iterator
yarn add @utilx/iterator
bun add @utilx/iterator
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.3 |
| Published | 2019-04-05 |
| First published | 2019-04-04 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 47.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | lteam |

## Links

- npm: https://www.npmjs.com/package/@utilx/iterator
- Repository: https://github.com/edwinjhlee/iterator-utils
- Homepage: https://github.com/edwinjhlee/iterator-utils#readme
- Issues: https://github.com/edwinjhlee/iterator-utils/issues
- npm.io page: https://npm.io/package/@utilx/iterator

## Dependencies (2)

- [minimatch](https://npm.io/package/minimatch.md) ^3.0.4
- [@types/minimatch](https://npm.io/package/@types/minimatch.md) ^3.0.3

## Recent versions

- 0.0.3 (latest) — 2019-04-05
- 0.0.2 — 2019-04-05
- 0.0.1 — 2019-04-05
- 0.0.0 — 2019-04-04

## README

# iterator-utils

```bash
npm install @typeshell/iterator-utils --save
```

Now it could work

## 核心方法 ix

通过iter，将实现了Iterable接口的对象转换成了我们内部定义接口更强大的IterableIteratorX接口。


### 生成列表

```typescript
import ix from "iterator-utils"

const t = ix(10).take(e => e%2===0)
console.log(t.toArray())
```


### 对迭代器（Iterable）的增强

```typescript
import ix from "iterator-utils"

const t = ix([1,2,3]).take("2").take(/^\d+[68]$/).map(e => e * 10)
console.log(t.toArray())

// python用法： 
// [i * 12 for i in range(10) if i % 2 == 0]
ix(10).fm((v, ds) => i % 2 === 0 ? v * 12 : ds)
```

### 对 异步迭代器（AsyncIterable）的增强

```typescript
import ix from "iterator-utils"

const t = ix([1,2,3]).take("2").take(/^\d+[68]$/).map(e => e * 10)
console.log(t.toArray())
```

### 对 Map 的增强

```typescript
import ix from "iterator-utils"

const map: Map<string, string> = ix(10).toMap(e=>[e, e*2]) // 生成Map，内容为 { 0:0, 1: 2, 3:4, ..., 9:18}
map.map((k, v) => [k, v+1])

const m1 = new Map<number, number>()
m1.set(1,2)
m1.set(2,4)
ix(m1).map((k, v) => [k, v+1])
ix(m1).fm((k, v, ds) => k % 2 === 0 ? ds : [k, v+1])
```


### 为什么不对 Array 和 Object 进行增强？

增强的成员方法，会在Object.keys(source) 调用中作为成员返回，一定程度改变了source 这个对象的内部，因此，并不提供这种实现。

### 支持glob/regex的take/drop函数

take函数可以接受字符串（glob模式），RegExp（正则表达式），函数（此时，take功能等同于filter）
drop函数亦然，与take不同的是，drop函数是条件成立时丢弃数据

另外，支持glob/regex/word的takeBy/dropBy函数族

### chain函数

### 支持惰性列表以及无限序列

---
_Source: https://npm.io/package/@utilx/iterator · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
