Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A handy function with a unified interface to iterate Strings, Arrays, TypedArrays, Maps, Sets, (any Iterables) & Objects.

License

Notifications You must be signed in to change notification settings

alrik/iterate-javascript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

11 Commits

Repository files navigation

iterate-javascript

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.

Installation

$ yarn add @a-z/iterate-it
# or
$ npm i -S @a-z/iterate-it

Usage

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);

Parameters

iterable

The iterable or object to iterate over. Supported types are String, Array, TypedArray, Map, Set, (any Iterable) & Object.

callback

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

Return Value

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.

Examples

Iterating strings

iterate("a1b2c3d4e5", (char, index, str) => {}); 
// => "12345"
iterate(new String("a1b2c3d4e5"), (char, index, str) => {}); 
// => [String: '12345']

Iterating maps

const map = new Map([['a', 1], ['b', 2], ['c', 3]]);
iterate(map, (value, key) => console.log(key, value)); 
// a 1
// b 2
// c 3

Iterating sets

const set = new Set(['a', 1, 'b']);
iterate(set, (value, key) => console.log(key, value)); 
// a a
// 1 1
// b b

Iterating arrays

const arr = ['a', 1, 'b'];
iterate(arr, (value, index) => console.log(index, value)); 
// 0 a
// 1 1
// 2 b

Iterating typed arrays

const typedArr = new Int32Array([1, 2, -3]);
iterate(typedArr, (value, index) => console.log(index, value));
// 0 1
// 1 2
// 2 -3

Iterating plain objects

const obj = { a: 1, b: 2, c: 3 };
iterate(obj, (value, key) => console.log(key, value)); 
// a 1
// b 2
// c 3

Skipping the iteration

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

LICENSE

The files in this archive are released under MIT license. You can find a copy of this license in LICENSE.

About

A handy function with a unified interface to iterate Strings, Arrays, TypedArrays, Maps, Sets, (any Iterables) & Objects.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /