建立一个新数组,包含原数组中全部的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。es6
如下是本身实现的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的实现prototype
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; }
这样写的好处是 传入一个字符串会返回一个数组 好像也没其余做用,为何不直接判断是不是数组呢?code