| var Symbol = require('./_Symbol'), | |
| copyArray = require('./_copyArray'), | |
| getTag = require('./_getTag'), | |
| isArrayLike = require('./isArrayLike'), | |
| isString = require('./isString'), | |
| iteratorToArray = require('./_iteratorToArray'), | |
| mapToArray = require('./_mapToArray'), | |
| setToArray = require('./_setToArray'), | |
| stringToArray = require('./_stringToArray'), | |
| values = require('./values'); | |
| /** `Object#toString` result references. */ | |
| var mapTag = '[object Map]', | |
| setTag = '[object Set]'; | |
| /** Built-in value references. */ | |
| var symIterator = Symbol ? Symbol.iterator : undefined; | |
| /** | |
| * Converts `value` to an array. | |
| * | |
| * @static | |
| * @since 0.1.0 | |
| * @memberOf _ | |
| * @category Lang | |
| * @param {*} value The value to convert. | |
| * @returns {Array} Returns the converted array. | |
| * @example | |
| * | |
| * _.toArray({ 'a': 1, 'b': 2 }); | |
| * // => [1, 2] | |
| * | |
| * _.toArray('abc'); | |
| * // => ['a', 'b', 'c'] | |
| * | |
| * _.toArray(1); | |
| * // => [] | |
| * | |
| * _.toArray(null); | |
| * // => [] | |
| */ | |
| function toArray(value) { | |
| if (!value) { | |
| return []; | |
| } | |
| if (isArrayLike(value)) { | |
| return isString(value) ? stringToArray(value) : copyArray(value); | |
| } | |
| if (symIterator && value[symIterator]) { | |
| return iteratorToArray(value[symIterator]()); | |
| } | |
| var tag = getTag(value), | |
| func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); | |
| return func(value); | |
| } | |
| module.exports = toArray; |