每日Lodash(二)

81 阅读1分钟

compact

今天的lodash源码解析为_.compact

先看这个方法是干嘛的

创建一个新数组,包含原数组中所有的非假值元素。例如falsenull,0""undefined, 和 NaN 都是被认为是“假值”。

再看源码

function compact(array) {
  let resIndex = 0
  const result = []

  if (array == null) {
    return result
  }

  for (const value of array) {
    if (value) {
      result[resIndex++] = value
    }
  }
  return result
}

其实源码很简单,只有15行,主要做的操作是,创建一个新的数组,然后将原来数组中的 真值 返回,其实核心所作的就是创建数组,存入真值。

代码的第5行,通过双等,而没有三等的好处是,可以同时过滤掉null和undefined两个非法值。

然后第9行,通过for...of进行数组的遍历,通过if来判断是否为真值,当为假值时候,就会进行过滤处理,然后将真值付给创建的数组,最后将这个数组返回。

这里的知识点主要为for...of和if(value) 判断是否为真值,这两个知识点。

后面会为这两个知识点出单独的章节