_.toArray(value)
165
_.toArray(value)
_.toArray将一个值转变成数组
参数
value (*): 需要转换的值
返回值
(Array): 返回转换后的数组
例子
_.toArray({ 'a': 1, 'b': 2 }); // => [1, 2] _.toArray('abc'); // => ['a', 'b', 'c'] _.toArray(1); // => [] _.toArray(null); // => []
源代码
import copyArray from './.internal/copyArray.js' import getTag from './.internal/getTag.js' import isArrayLike from './isArrayLike.js' import isString from './isString.js' import iteratorToArray from './.internal/iteratorToArray.js' import mapToArray from './.internal/mapToArray.js' import setToArray from './.internal/setToArray.js' import stringToArray from './.internal/stringToArray.js' import values from './values.js' /** `Object#toString` result references. */ const mapTag = '[object Map]' const setTag = '[object Set]' /** Built-in value references. */ const symIterator = Symbol ? Symbol.iterator : undefined /** * Converts `value` to an array. * * @since 0.1.0 * @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) {//如果value为假,返回空数组 return [] } if (isArrayLike(value)) {//如果value是array-like对象 //如果是字符串,调用stringToArray转换成数组,否则是数组或者对象调用copyArray转换 return isString(value) ? stringToArray(value) : copyArray(value) } if (symIterator && value[symIterator]) { //如果当前环境存在Symbol.iterator,调用iteratorToArray将遍历器转换成数组 return iteratorToArray(value[symIterator]()) } const tag = getTag(value)//获取toStringTag const func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values) //判断是Map还是Set对象使用对应的方法处理 return func(value) } export default toArray