创建一个新数组,包含原数组中所有的非假值元素。例如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;
}
这样写的好处是 传入一个字符串会返回一个数组 好像也没其他作用,为什么不直接判断是否是数组呢?