lodash-compact方法的实现

46次阅读

共计 558 个字符,预计需要花费 2 分钟才能阅读完成。

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

以下是自己实现的 compact()

   compact:(array)=>{let result = []
        // 判断参数是否是数组 如果不是数组 直接返回一个空数组
        // 也可以用 es6 提供的 Array.isArray(array) 来判断 更简洁
        if(!Object.prototype.toString.call(array)==='[object Array]') {return result}
        array.forEach(element => {if(element) {result.push(element)
            }
        });
        return result
    }

lodash 的实现

    compact:(array)=>{
        var index = -1,
        length = array == null ? 0 : array.length,
        resIndex = 0,
        result = [];
  
    while (++index < length) {var value = array[index];
      if (value) {result[resIndex++] = value;
      }
    }
    return result;
  }

这样写的好处是 传入一个字符串会返回一个数组 好像也没其他作用,为什么不直接判断是否是数组呢?

正文完
 0