iterate-value

WebJar for iterate-value

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

iterate-value
Last Version

Last Version

1.0.2
Release Date

Release Date

Type

Type

jar
Description

Description

iterate-value
WebJar for iterate-value
Project URL

Project URL

https://www.webjars.org
Source Code Management

Source Code Management

https://github.com/ljharb/iterate-value

Download iterate-value

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/iterate-value/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>iterate-value</artifactId>
    <version>1.0.2</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/iterate-value/
implementation 'org.webjars.npm:iterate-value:1.0.2'
// https://jarcasting.com/artifacts/org.webjars.npm/iterate-value/
implementation ("org.webjars.npm:iterate-value:1.0.2")
'org.webjars.npm:iterate-value:jar:1.0.2'
<dependency org="org.webjars.npm" name="iterate-value" rev="1.0.2">
  <artifact name="iterate-value" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='iterate-value', version='1.0.2')
)
libraryDependencies += "org.webjars.npm" % "iterate-value" % "1.0.2"
[org.webjars.npm/iterate-value "1.0.2"]

Dependencies

compile (2)

Group / Artifact Type Version
org.webjars.npm : es-get-iterator jar [1.0.2,2)
org.webjars.npm » iterate-iterator jar [1.0.1,2)

Project Modules

There are no modules declared in this project.

iterate-value Version Badge

Build Status dependency status dev dependency status License Downloads

npm badge

Iterate any iterable JS value. Works robustly in all environments, all versions.

In modern engines, [...value] or Array.from(value) or for (const item of value) { } are sufficient to iterate an iterable value (an object with a Symbol.iterator method). However, older engines:

  • may lack Symbol, array spread, or for..of support altogether
  • may have Symbol.iterator but not implement it on everything it should, like arguments objects
  • may have Map and Set, but a non-standard name for the iterator-producing method (.iterator or ['@@iterator'], eg) and no syntax to support it
  • may be old versions of Firefox that produce values until they throw a StopIteration exception, rather than having iteration result objects
  • may be polyfilled/shimmed/shammed, with es6-shim or core-js or similar

This library attempts to provide an abstraction over all that complexity!

If called with a single value, it will return an array of the yielded values. If also called with a callback function, it will instead call that callback once for each yielded value.

In node v13+, exports is used by the es-get-iterator dependency to provide a lean implementation that lacks all the complexity described above, in combination with the browser field so that bundlers will pick up the proper implementation.

If you are targeting browsers that definitely all have Symbol support, then you can configure your bundler to replace require('has-symbols')() with a literal true, which should allow dead code elimination to reduce the size of the bundled code.

Example

var iterate = require('iterate-value');
var assert = require('assert');

assert.deepEqual(iterate('a ๐Ÿ’ฉ'), ['a', ' ', '๐Ÿ’ฉ']);
assert.deepEqual(iterate([1, 2]), [1, 2]);
assert.deepEqual(iterate(new Set([1, 2])), [1, 2]);
assert.deepEqual(iterate(new Map([[1, 2], [3, 4]])), [[1, 2], [3, 4]]);

function assertWithCallback(iterable, expected) {
	var values = [];
	var callback = function (x) { values.push(x); };
	iterate(iterable, callback);
	assert.deepEqual(values, expected);
}
assertWithCallback('a ๐Ÿ’ฉ', ['a', ' ', '๐Ÿ’ฉ']);
assertWithCallback([1, 2], [1, 2]);
assertWithCallback(new Set([1, 2]), [1, 2]);
assertWithCallback(new Map([[1, 2], [3, 4]]), [[1, 2], [3, 4]]);

Tests

Simply clone the repo, npm install, and run npm test

Versions

Version
1.0.2