建立一個新數組,包含原數組中全部的非假值元素。例如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