00001 var Symbol = require('./_Symbol'), 00002 copyArray = require('./_copyArray'), 00003 getTag = require('./_getTag'), 00004 isArrayLike = require('./isArrayLike'), 00005 isString = require('./isString'), 00006 iteratorToArray = require('./_iteratorToArray'), 00007 mapToArray = require('./_mapToArray'), 00008 setToArray = require('./_setToArray'), 00009 stringToArray = require('./_stringToArray'), 00010 values = require('./values'); 00011 00013 var mapTag = '[object Map]', 00014 setTag = '[object Set]'; 00015 00017 var symIterator = Symbol ? Symbol.iterator : undefined; 00018 00042 function toArray(value) { 00043 if (!value) { 00044 return []; 00045 } 00046 if (isArrayLike(value)) { 00047 return isString(value) ? stringToArray(value) : copyArray(value); 00048 } 00049 if (symIterator && value[symIterator]) { 00050 return iteratorToArray(value[symIterator]()); 00051 } 00052 var tag = getTag(value), 00053 func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); 00054 00055 return func(value); 00056 } 00057 00058 module.exports = toArray;