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-reactjrennsoh88-react-native-scroll-indicatorjesh-calculationjnf-accesscontrol-rnttljordy-frijters-test-libkhaled-salem-custom-componentshong1-utils@wecraftapps/react-native-use-keyboard@tlgeo/react-native-gdal@thinxviewx/core-rn@vitali_shcherbina/styled-lib@zalastax/nolb-ite@zotasys/nativeagent-get-agentawesome-module-kdarchlibraryappcharge-checkout@podlubnaja/ui-kit@ponchodien/react-native-printer-imingenz-native-elementsfn-lib-exampleframework_test_library_sixdeeframework_test_library_sixdee_newframework_test_library_sixdee_new_newgaurav-react-native-loopgamification-integration-newdogandev-simple-toastexpo-renavigatefawaterak-online-paymentfawatrak-online-paymentfluent.adflow.reactnativesdkfluent.adflow.reactnativesdk-alphafmsl@_nomtek/react-native-shimmer-animation@praella/localisationist@blkmarketco/components-library@aysea/react-native-ui-library@azalpacir/react-native-dhp-printer@brantalikp/rn-resizecheckbox-componentcotrader-dex-sdkdemo-test-scrndesign-system-fitbank-450biometric-st@adembacaj/react-native-google-pay@adatechnology/react-native-android-getnet-pos@andystevenson/lib@ali5049/react-native-buttons@amirdiafi/react-native-ios-haptics@amiruldev/wajs@aviinash_jha/react-native-test_multiplyjawwy_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-libraryyangtao-jsyarn-react-hook-formnative-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-poccomponent
1.0.2

4 years ago

1.0.1

6 years ago

1.0.0

6 years ago