UNPKG

for-each-break

Version:

forEach, map and filter with break and return emulation

47 lines (30 loc) 2.03 kB
# for-each-break [![experimental](https://badges.github.io/stability-badges/dist/experimental.svg)](https://github.com/badges/stability-badges) Small utility library implementing `forEach`, `map`, `filter`, `forEachRight`, `mapRight` and `filterRight` functions with break and return emulation as if it was a regular `for` or `while` loop. To simulate break return `BREAK` or `RETURN`, to simulate `return` return `BREAK(value)` or `RETURN(value)` both are equivalent but the one communicating the right intent should be used. The functions assume `this` is an array like object so they should be invoked with `.call(arrayLike, callback)` defines: <!-- @formatter:off --> * `BREAK` - used to break or return from loop, using `BREAK` to break out of loop is preferred since it communicates clear intention * `RETURN` - used to break or return from loop, using `RETURN` to break out of loop and return a value is preferred since it communicates clear intention * `filter` - use to filter array like object, with early break or return: `filter.call(arrayLike, callback, thisArg)` * `forEach` - use to loop over array like object: `forEach.call(arrayLike, callback, thisArg, defaultReturn)` * `map` - use to map array like object, with early break or return: `map.call(arrayLike, callback, thisArg)` * `filterRight` - use to filter array like object in reverse, with early break or return: `filter.call(arrayLike, callback, thisArg)` * `forEachRight` - use to loop over array like object in reverse: `forEach.call(arrayLike, callback, thisArg, defaultReturn)` * `mapRight` - use to map array like object in reverse, with early break or return: `map.call(arrayLike, callback, thisArg)` <!-- @formatter:on --> ## Install Use [npm](https://npmjs.com/) to install. ``` npm install for-each-break --save ``` ## Usage [![NPM](https://nodei.co/npm/for-each-break.png)](https://www.npmjs.com/package/for-each-break) ## License MIT, see [LICENSE.md](https://github.com/vsch/for-each-break/blob/master/LICENSE.md) for details.