_.compact 过滤数组假值
/*
* @static
* @memberOf _
* @since 0.1.0
* @category Array
* @param {Array} array The array to compact.
* @returns {Array} Returns the new array of filtered values.
* @example
*
* _.compact([0, 1, false, 2, '', 3]);
* // => [1, 2, 3]
*/
function 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;
}
整体的思路:
- 循环所传数组,判断数组长度
- 判断数组的每一项是否有值,如果有推入新数组
- 推出新数组