实现underscore的部分方法(数组系列)

反转一个三位数

/**
 * @param number: A 3-digit number.
 * @return: Reversed number.
 */
const reverseInteger = (number) => {
    if (number && typeof number === 'number' && (number >= 100 && number < 1000)) {
        return +(`${number}`.split(``).reverse().join(``))
    }
}

返回array(数组)的第一个元素。传递 n参数将返回数组中从第一个元素开始的n个元素

const _first = (arr, n) => {
    if (!Array.isArray(arr)) return false
    return n ? arr.splice(0, n) : arr[0]
}

返回数组中除了最后一个元素外的其他全部元素。传递 n 参数将从结果中排除从最后一个开始的n个元素

const initial = (arr, n) => {
    return [].splice.call(arr, 0, arr.length - (n || 1))
}

返回array(数组)的最后一个元素。传递 n参数将返回数组中从最后一个元素开始的n个元素

const last = (arr, n) => {
    return [].splice.call(arr, arr.length - (n || 1), arr.length - 1)
}

返回数组中除了第一个元素外的其他全部元素。传递 index 参数将返回从index开始的剩余所有元素

const rest = (arr, n) => {
    return [].splice.call(arr, n || 1, arr.length - 1)
}

返回一个除去所有false值的 array副本。 在javascript中, false, null, 0, "", undefined 和 NaN 都是false值.

const compact = arr => {
    arr.forEach((item, index) => {
        !item ? [].splice.call(arr, index, 1) : ((!!item === false) && [].splice.call(arr, index, 1))
    })
    return arr
}
compact([0, 1, false, 2, '', 3]) // [1, 2, 3]