Lodash源码分析-castArray.js

1,158 阅读1分钟

前言

此方法没有对其他方法进行引用

正文

源代码

/**
  * Casts `value` as an array if it's not one.
  *
  * @since 4.4.0
  * @category Lang
  * @param {*} value The value to inspect.
  * @returns {Array} Returns the cast array.
  * @example
  *
  * castArray(1)
  * // => [1]
  *
  * castArray({ 'a': 1 })
  * // => [{ 'a': 1 }]
  *
  * castArray('abc')
  * // => ['abc']
  *
  * castArray(null)
  * // => [null]
  *
  * castArray(undefined)
  * // => [undefined]
  *
  * castArray()
  * // => []
  *
  * const array = [1, 2, 3]
  * console.log(castArray(array) === array)
  * // => true
  */
function castArray(...args) {
  if (!args.length) {
    return []
  }
  const value = args[0]
  return Array.isArray(value) ? value : [value]
}

export default castArray

解析

参数

该方法接受任何形式的参数

返回值

该方法返回一个数组

方法解析

该方法首先会判断传入参数的个数,若无任何传入参数,会直接返回给调用该方法的地方一个空数组,否则进行下一步。

下一步该方法会将传入的第一个参数赋值给方法内声明的value变量,然后判断变量内的值(也就是传入该方法的第一个参数)是否为Array类型(即数组类型),若该值为数组类型,则直接将其返回给调用该方法的地方,否则创建一个新数组将其作为新数组第一项,并将该新数组返回给调用该方法的地方。

注: 该方法不管传入多少个参数,只会取传入的第一个参数。

示例

castArray(1)
--> [1]
castArray("1")
--> ["1"]
castArray({a: 1})
--> [(a: 1)]
castArray([1,2,3])
--> [1, 2, 3]
castArray(undefined)
--> [undefined]
castArray(null)
--> [null]
castArray(NaN)
--> [NaN]
castArray(Symbol("1"))
--> [Symbol(1)]
castArray(1,2)
--> [1]

相关链接:

每日源码分析 - lodash(after.js)

每日源码分析 - lodash(chunk.js)

本文章来源于午安煎饼计划Web组 - 残阳