定位

_.initial

_.initial(array, n):获得 array 的除了最后 n 个元素以外的元素。

源码

_.initial = function (array, n, guard) {
    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
};

initial 的实现很简单,就是基于 Array.prototype.slice,并且对 n 进行了校正,如果没有传递 n,则返回除了最末元素以外的所有元素。

用例

_.initial([5, 4, 3, 2, 1], 2);
// => [5, 4, 3]

_.initial([5, 4, 3, 2, 1]);
// => [5, 4, 3, 2]

_.rest = _.tail = _.drop

_.rest(array, n):返回 array 中除了前 n 个元素外的所有元素。

源码

_.rest = _.tail = _.drop = function (array, n, guard) {
    return slice.call(array, n == null || guard ? 1 : n);
};

用例

_.rest([5, 4, 3, 2, 1], 2);
// => [3, 2, 1]

_.rest([5, 4, 3, 2, 1]);
// => [4, 3, 2, 1]

_.first = _.head = _.take

_.first(array, n):获得 array 的前 n 个元素。

假设 array 长度为 length,则 _.first(array, n) 就相当于 _.initial(array, length-n)

源码

_.first = _.head = _.take = function (array, n, guard) {
    if (array == null || array.length < 1) return void 0;
    if (n == null || guard) return array[0];
    return _.initial(array, array.length - n);
};

若不传递 n,则返回数组首个元素

用例

_.first([1, 2, 3, 4, 5], 2);
// => [1, 2]

_.first([1, 2, 3, 4, 5]);
// => 1

results matching ""

    No results matching ""