Skip to content

alrik/iterate-javascript

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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