UNPKG

1.41 kBJavaScriptView Raw
1var Symbol = require('./_Symbol'),
2 copyArray = require('./_copyArray'),
3 getTag = require('./_getTag'),
4 isArrayLike = require('./isArrayLike'),
5 isString = require('./isString'),
6 iteratorToArray = require('./_iteratorToArray'),
7 mapToArray = require('./_mapToArray'),
8 setToArray = require('./_setToArray'),
9 stringToArray = require('./_stringToArray'),
10 values = require('./values');
11
12/** `Object#toString` result references. */
13var mapTag = '[object Map]',
14 setTag = '[object Set]';
15
16/** Built-in value references. */
17var symIterator = Symbol ? Symbol.iterator : undefined;
18
19/**
20 * Converts `value` to an array.
21 *
22 * @static
23 * @since 0.1.0
24 * @memberOf _
25 * @category Lang
26 * @param {*} value The value to convert.
27 * @returns {Array} Returns the converted array.
28 * @example
29 *
30 * _.toArray({ 'a': 1, 'b': 2 });
31 * // => [1, 2]
32 *
33 * _.toArray('abc');
34 * // => ['a', 'b', 'c']
35 *
36 * _.toArray(1);
37 * // => []
38 *
39 * _.toArray(null);
40 * // => []
41 */
42function toArray(value) {
43 if (!value) {
44 return [];
45 }
46 if (isArrayLike(value)) {
47 return isString(value) ? stringToArray(value) : copyArray(value);
48 }
49 if (symIterator && value[symIterator]) {
50 return iteratorToArray(value[symIterator]());
51 }
52 var tag = getTag(value),
53 func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
54
55 return func(value);
56}
57
58module.exports = toArray;