2
Version:
The Type Conversion Library. Numbers, Strings, Arrays, Maps, Objects, and Iterators.
14 lines (11 loc) • 465 B
JavaScript
const emptyIterator = require('empty-iterator')
const isIterable = require('is-iterable')
const isNil = require('is-nil')
const sbo = require('sbo')
module.exports = sbo(function toIterator (x) {
if (isNil(x) || Number.isNaN(x)) return emptyIterator()
if (typeof x !== 'object') return [x][Symbol.iterator]()
if (isIterable(x)) return x[Symbol.iterator]() // Arrays, Sets, Maps, etc.
return Object.entries(x)[Symbol.iterator]() // Objects
})