`Array#forEach()` but it’s possible to define where to move to next
npm install array-iterate[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Size][size-badge]][size]
[Array#forEach()][foreach] but it’s possible to define where to move to next.
* What is this?
* When should I use this?
* Install
* Use
* API
* [arrayIterate(values, callbackFn[, thisArg])](#arrayiteratevalues-callbackfn-thisarg)
* Types
* Compatibility
* Security
* Contribute
* License
A tiny package that works just like forEach, with one small difference.
You can use this if for some weird reason—like I did—you have to sometimes
skip a few places ahead or backwards when moving through an array.
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
``sh`
npm install array-iterate
In Deno with [Skypack][]:
`js`
import {arrayIterate} from 'https://cdn.skypack.dev/array-iterate@2?dts'
In browsers with [Skypack][]:
`html`
`js
import {arrayIterate} from 'array-iterate'
let first = true
arrayIterate(
[1, 2, 3, 4],
(value, index, values) => {
console.log(this, value, index, values)
// Repeat once.
if (first && index + 1 === values.length) {
first = false
return 0
}
},
{hello: 'world'}
)
`
Yields:
`js`
{hello: 'world'}, 1, 0, [1, 2, 3, 4]
{hello: 'world'}, 2, 1, [1, 2, 3, 4]
{hello: 'world'}, 3, 2, [1, 2, 3, 4]
{hello: 'world'}, 4, 3, [1, 2, 3, 4]
{hello: 'world'}, 1, 0, [1, 2, 3, 4]
{hello: 'world'}, 2, 1, [1, 2, 3, 4]
{hello: 'world'}, 3, 2, [1, 2, 3, 4]
{hello: 'world'}, 4, 3, [1, 2, 3, 4]
This package exports the following identifiers: arrayIterate.
There is no default export.
Perform the specified action for each element in an array (just like
[Array#forEach()][foreach]).callbackFn
When returns a number, moves to the element at that index
next.
###### Parameters
values (Array<>)callbackFn
— values to iterate over
* (Function)index
— function called for each element, can return the to move to nextthisArg
(, optional)this
— optional object assigned as in callbackFn
###### Returns
undefined.
#### function callbackFn(value, index, values)
Callback given to iterate.
###### Parameters
this ()thisArg
— context object when given as to arrayIterate or undefinedvalue
()index
— element in array
* (number)value
— index of in valuesvalues
(Array.<>)
— list
###### Returns
number or undefined — the index to move to next.
This package is fully typed with [TypeScript][].
There is also a CallbackFn` type export that represents the callback function.
This package is at least compatible with all maintained versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
It also works in Deno and modern browsers.
This package is safe, assuming that you don’t create an infinite loop
by keeping on repeating.
Yes please!
See [How to Contribute to Open Source][contribute].
[MIT][license] © [Titus Wormer][author]
[build-badge]: https://github.com/wooorm/array-iterate/workflows/main/badge.svg
[build]: https://github.com/wooorm/array-iterate/actions
[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/array-iterate.svg
[coverage]: https://codecov.io/github/wooorm/array-iterate
[downloads-badge]: https://img.shields.io/npm/dm/array-iterate.svg
[downloads]: https://www.npmjs.com/package/array-iterate
[size-badge]: https://img.shields.io/bundlephobia/minzip/array-iterate.svg
[size]: https://bundlephobia.com/result?p=array-iterate
[npm]: https://docs.npmjs.com/cli/install
[skypack]: https://www.skypack.dev
[license]: license
[author]: https://wooorm.com
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[typescript]: https://www.typescriptlang.org
[contribute]: https://opensource.guide/how-to-contribute/
[foreach]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach