携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情
前言
本篇章我们将了解lodash对外导出的方法head、last、join的使用,同时从源码分析每个方法的实现。
head
head方法主要是获取参数数组 array
的第一个元素。
示例如下:
_.head([1, 2, 3]);
// => 1
_.head([]);
// => undefined
在实现上,lodash内部会对参数进行判断,只有参数存在并且身上存在length属性时,会返回该参数的第一个值,即array[0],否则返回undefined,所以在实现上由于js的性质,我们可以获取字符串第一个字符。
源码如下:
function head(array) {
return (array && array.length) ? array[0] : undefined;
}
last
last方法主要是获取参数数组array
中的最后一个元素。
使用如下:
_.last([1, 2, 3]);
// => 3
last方法同head方法一样,首先会对参数进行处理。当参数为null时,会对变量length赋值为0,否则赋值为参数的length值。然后再对赋值后的length进行判断,只有length大于0的时候,会取参数的最后一个,即array[length - 1],否则返回undefined。
源码如下:
function last(array) {
var length = array == null ? 0 : array.length;
return length ? array[length - 1] : undefined;
}
join
join方法主要是将“数组”中的所有元素转换为由“分隔符”分隔的字符串。
参数说明:
- 参数1:数组类型,表示要转换的数组。
- 参数2:字符串类型,表示分隔元素
使用如下:
_.join(['a', 'b', 'c'], '~');
// => 'a~b~c'
join方法实现上会先判断参数array
方法是否属于null,为null则返回空字符串,否则返回Array.prototype.join的调用结果。
源码如下:
var arrayProto = Array.prototype;
var nativeJoin = arrayProto.join;
function join(array, separator) {
return array == null ? '' : nativeJoin.call(array, separator);
}
小结
本篇章我们主要了解lodash里的几个数组方法,head、last和join方法的使用和实现,head和last在实现上决定了不止可以用在数组上,还可以对字符串进行取值操作。而join方法对比原生的join方法,区别在于lodash内部对参数null进行了容错判断处理,同时head和last内部也对参数进行判断处理,侧面表现了lodash在方法封装的严谨性。