# generator-foreach

> forEach for generators

Latest version **0.1.0** (published 2014-02-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install generator-foreach
pnpm add generator-foreach
yarn add generator-foreach
bun add generator-foreach
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2014-02-09 |
| First published | 2014-02-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Vladimir Kurchatkin |
| Maintainers | vkurchatkin |

## Links

- npm: https://www.npmjs.com/package/generator-foreach
- npm.io page: https://npm.io/package/generator-foreach

## Recent versions

- 0.1.0 (latest) — 2014-02-09

## README

# generator-foreach
## forEach for generators

Imagine you want to use `forEach` inside a generator function:

```javascript

var stuff = [1, 2, 3, 4, 5]

function * fn () {
  stuff.forEach(something)

  function something (item) {
    console.log(item)
  }
}

for (var i of fn());

```

It works ok, but what if you want to yield a value based on an `item`?

```javascript

var stuff = [1, 2, 3, 4, 5]

function * fn () {
  stuff.forEach(something)

  function something (item) {
    yield item
  }
}

for (var i of fn()) console.log(i)

```

Doesn't work anymore! You can't use `yield` inside an ordinary function. So `generator-foreach` comes into play:

```javascript

var foreach = require('generator-foreach')
var stuff = [1, 2, 3, 4, 5]

function * fn () {
  yield * foreach(stuff, something)

  function * something (item) {
    yield item
  }
}

for (var i of fn()) console.log(i)

```

Do use it you need to remember a couple of things:

 - pass an array as a first argument;
 - use `yield *` before `foreach`;
 - make your iterator generator function.


# Examples
## Basic

Use `--harmony` or `--harmony-generators --harmony-iteration` flags

```javascript
/**
 * basic example
 */

var foreach = require('generator-foreach')

function * gen (array) {
  yield * foreach(array, function * (num) {
    yield num + 1
  })
}


for (var num of gen([1, 2, 3])) console.log(num)

```

## Fancy recursive array flattening

Use `--harmony` or `--harmony-generators --harmony-iteration` flags

```javascript
/**
 * fancy recursive array flattening
 */

var foreach = require('generator-foreach')

function * value (val) {
  yield val
}

function * flatten (array) {
  yield * Array.isArray(array) ? foreach(array, flatten) : value(array)
}

var array = [1, 2, [3, [4, 5, [6, 7]]]]

for (var num of flatten(array)) console.log(num)

```

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