2

lodash.compact()

大家好-我是灵魂画师-茄子。水平一般,喜欢画画。

最近开始看有关lodash的源码了 争取每天一篇有关lodash的方法的解释

_.compact(array)
创建一个新数组,包含原数组中所有的非假值元素。例如false, null, 0,-0, "", undefined, 和 NaN 都是被认为是“假值”。
 * @since 0.1.0
 * @category Array
 * @param {Array} array The array to compact.
 * @returns {Array} Returns the new array of filtered values.

相关代码:

function compact(array) {
  var index = -1,
      length = array == null ? 0 : array.length,
      resIndex = 0,
      result = [];

  while (++index < length) { // ++a 先加再进行对比 
    var value = array[index];
    if (value) { // 核心代码 利用假值来判断是否注入数据到新数组中 
      result[resIndex++] = value; // a ++ 先使用 再加
    }
  }
  return result;
}

大致思路:

  1. 判断array是否 == null (null,undefined等)后,获取array的length
  2. 利用while循环 取 array中每一个元素value, 判断 Boolean(value)是否为true
  3. 如果为true则注入新数组result中
  4. 返回result(一个新的数组)

这个方法比较简单,我相信大家也都看懂了

我也有很多不懂的地方,欢迎大家一起来讨论与技术有关的一些想法~~~


灵魂画师_茄子
11 声望4 粉丝