1.0.2 • Published 4 years ago

iterate-iterator v1.0.2

Weekly downloads
2,230,512
License
MIT
Repository
github
Last release
4 years ago

iterate-iterator Version Badge

github actions coverage dependency status dev dependency status License Downloads

npm badge

Iterate any iterable JS iterator. 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), which includes all builtin iterators. 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 simplifies iterating an iterator object, so no loops are required.

If called with a single iterator, 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.

Example

var iterate = require('iterate-iterator');
var getIterator = require('es-get-iterator');
var assert = require('assert');

assert.deepEqual(iterate(getIterator('a 💩')), ['a', ' ', '💩']);
assert.deepEqual(iterate(getIterator([1, 2])), [1, 2]);
assert.deepEqual(iterate(getIterator(new Set([1, 2]))), [1, 2]);
assert.deepEqual(iterate(getIterator(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(getIterator('a 💩'), ['a', ' ', '💩']);
assertWithCallback(getIterator([1, 2]), [1, 2]);
assertWithCallback(getIterator(new Set([1, 2])), [1, 2]);
assertWithCallback(getIterator(new Map([[1, 2], [3, 4]])), [[1, 2], [3, 4]]);

Tests

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

iterate-valueeasy-select-rnreact-native-printer-brothersreact-native-shekhar-bridge-test@oiti/documentoscopy-react-nativequoc-test@saaspe/componentsluminos-ui-core@everything-registry/sub-chunk-1940jawwy-sdkjawwy_gamification_releasereact-native-sphereuisphereuijawwy_libraryreact-native-credit-card-pkgreact-native-jawwy_samplegriffin-ui-librarytest-library-123test-haptik-libwifi_configuration_packagetest-zeo-collectsvelte-component-libvision-camera-plugin-face-detectorvision-camera-base64-resizedvantiq-react@cs6/react-native-test-native-view-library@con-test/react-native-concent-common@damruravihara/react-native-testing-package@blkmarketco/components-library@praella/localisationistjrennsoh88-react-native-scroll-indicatorjesh-calculationjnf-accesscontrol-rnttljordy-frijters-test-libkhaled-salem-custom-componentsjawwy_library_newjawy_library_v1gamification-jawwy-libraryframework_test_library_sixdee_new_jawwytest_lib_module_aarquickcapture_react_nativern-agora-ios-mreact-native-omental-frameworkreact-native-sixdee_test_libu-library@amiruldev/wajs@amirdiafi/react-native-ios-haptics@andystevenson/lib@aviinash_jha/react-native-test_multiply@ali5049/react-native-buttons@aysea/react-native-ui-library@brantalikp/rn-resize@adatechnology/react-native-android-getnet-pos@adembacaj/react-native-google-pay@_nomtek/react-native-shimmer-animation@azalpacir/react-native-dhp-printeryangtao-jsyarn-react-hook-form@idas1/ui-component-lib@labiebhn_/react-native-multiplier@kylesferrazza/graphql-relay-updated@lego-js/tests@lehuyaa/my-assets@navabi/react-native-ssl-pinning@extrieve_technologies/quickcapture_react_native@kgit/readability@jfilipe-sparta/react-native-module_2@oiti/rn-liveness2d@react-native-ui-design/button@ponchodien/react-native-printer-imin@podlubnaja/ui-kit@npm_fluentco/adflow-react-native-sdk@skeetboothppq/component-library@sidghimire/react-native-mapbox-navigation@shivarajapple/first-library@sephriot/react-native-persistable-uri@sridharetikala/react-native-rn-lib-custom-componentsnative-date-picker-modulenative-modal-damage-vehicleori-bot-react-nativeparvan_componentsparvan_reactjs_componentsreact-native-auth-service-clientreact-native-android-video-player-viewreact-native-android-viewreact-native-bluetooth-device-detectreact-native-dummy-viewreact-native-ctp-odpreact-native-custom-image-carouselreact-native-custom-poccomponentreact-native-custom-poccomponent-nextreact-native-dff-components-demoreact-native-dhp-printerreact-native-dimensions-layoutreact-native-check-componentreact-native-create-video-thumbnailreact-native-conekta-card-tokenizerreact-native-components-designreact-native-cplusreact-native-custome-component-demo
1.0.2

4 years ago

1.0.1

5 years ago

1.0.0

5 years ago