/** * Convert an array-like object into an `Array`. * If `collection` is already an `Array`, then will return a clone of `collection`. * * @param {Array | Mixed} collection An `Array` or array-like object to convert e.g. `arguments` or `NodeList` * @return {Array} Naive conversion of `collection` to a new `Array`. * @api private */ module.exports = function toArray(collection) { if (typeof collection === 'undefined') return [] if (collection === null) return [null] if (collection === window) return [window] if (typeof collection === 'string') return [collection] if (Array.isArray(collection)) return collection.slice() if (typeof collection.length != 'number') return [collection] if (typeof collection === 'function') return [collection] var arr = [] for (var i = 0; i < collection.length; i++) { if (collection.hasOwnProperty(i) || i in collection) { arr.push(collection[i]) } } if (!arr.length) return [] return arr }