lodash里的head、last、join

116 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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在方法封装的严谨性。