Subscribe to Release Notes NPM Package MIT license
A handy function with a unified interface to iterate Strings, Arrays, TypedArrays, Maps, Sets, (any Iterables) & Objects. The api is oriented on Array.prototype.forEach with the advantage of iterating almost everything and iteration skipping.
$ yarn add @a-z/iterate-it
# or
$ npm i -S @a-z/iterate-it
The module @a-z/itarate-it
exports a single function that takes to parameters; an iterable and a callback.
The iterate
function returns a iteration result, that indicates if the iteration was complete of has been skipped.
const iterate = require('@a-z/iterate-it'); const { complete } = iterate(iterable, callback);
The iterable or object to iterate over. Supported types are String, Array, TypedArray, Map, Set, (any Iterable) & Object.
A function to be called with every element or value of the iterable.
The iteration will stop if the function returns false
.
The function takes 3 parameters:
- value: The current element being processed.
- key: The corresponding key
- iterable: The iterable passed to iterate
iterate()
returns a status object with the following properties:
- complete: Will be
true
if all items have been iterated, falthy if the iteration was stoped before.
iterate("a1b2c3d4e5", (char, index, str) => {}); // => "12345" iterate(new String("a1b2c3d4e5"), (char, index, str) => {}); // => [String: '12345']
const map = new Map([['a', 1], ['b', 2], ['c', 3]]); iterate(map, (value, key) => console.log(key, value)); // a 1 // b 2 // c 3
const set = new Set(['a', 1, 'b']); iterate(set, (value, key) => console.log(key, value)); // a a // 1 1 // b b
const arr = ['a', 1, 'b']; iterate(arr, (value, index) => console.log(index, value)); // 0 a // 1 1 // 2 b
const typedArr = new Int32Array([1, 2, -3]); iterate(typedArr, (value, index) => console.log(index, value)); // 0 1 // 1 2 // 2 -3
const obj = { a: 1, b: 2, c: 3 }; iterate(obj, (value, key) => console.log(key, value)); // a 1 // b 2 // c 3
const arr = [1, 2, undefined, 3, 4]; const { complete } = iterate(arr, (value) => { console.log(value); // skip iteration as soon as there is an invalid item if (typeof value === 'undefined') { return false; } }); console.log(complete === true) // 1 // 2 // false
The files in this archive are released under MIT license. You can find a copy of this license in LICENSE.