3.1 first
3.1.1语法
_.first(array, [n])
3.1.2说明
返回数组的第一个元素,或前n个元素的集合。
3.1.3 代码示例
示例一:返回数组第一个元素
var list = [1, 2, 3, 4];
_.first(list); //=> 1
示例二:传参数n,始终返回数组
var list = [1, 2, 3, 4];
//n传1也返回数组。
_.first(list, 1); //=> [1]
//返回前2个元素
_.first(list, 2); //=> [1, 2]
3.1.4 list也可能是字符串
_.first('abc', 2); //=> ["a", "b"]
3.1.5 特殊的n值
var res;
var list = [1, 2, 3, 4];
// n < 0
_.first(list, -1); //=> []
// n > list.length
_.first(list, 10); //=> [1, 2, 3, 4]
3.1.6 list的特殊情况
_.first(true); //=> undefined
_.first(false); //=> undefined
_.first(NaN); //=> undefined
_.first({}); //=> undefined
_.first(undefined); //=> undefined
_.first(null); //=> undefined
_.first(true, 1); //=> []
_.first(false, 1); //=> []
_.first(NaN, 1); //=> []
_.first({}, 1); //=> []
_.first(undefined, 1); //=> []
_.first(null, 1); //=> []
3.1.7 first的别名
_.head([1, 2, 3]); // Number => 1
_.take([1, 2, 3]); // Number => 1
3.1.8 尝试自己实现功能
function slice(arr, n){
var res;
//写下你的代码
return res;
}
slice([1, 2, 3]); //=> 1
slice([1, 2, 3], 2); //=> [1, 2]
slice([1, 2, 3], -1); //=> []
slice([], 2); //=> [];
3.1.9 first的第三个参数
_.first([1, 2, 3], 1, true); // Number = > 1
_.first([1, 2, 3], 1, false); //=> [1]
3.1.10 源码展示
//三个方法名
_.first = _.head = _.take = function(array, n, guard) {
//如果==null返回undefined
if (array == null) return void 0;
//没有传n或guard为true返回array[0]
if (n == null || guard) return array[0];
//调用initial方法
return _.initial(array, array.length - n);
};