underscore.js 源码解析(六)
first
initial
last
rest
compact
first
实例
_.first(array, [n])
n
是可选的, 表示选择数组中的前 n
个元素, 当我们没有传递 n
的时候,我们获得的是数组的第一个元素 array[0]
。使用 first
用来获取到数组中的第一个元素。1 | let list = [1, 2, 3, 4]; |
源码分析
使用_.first
实现的源码如下:1 | _.first = _.head = _.take = function(array, n, guard) { |
- 如何判断
null
?
typeof
判断 null
会返回 object
, 实现判断是否为 null
的简单方法是进行判断: 1 | if (obj == null) { |
_.initial
用于获取到数组的相关值:_.initial
使用 _.initial
的目的在于返回数组中前 n
个元素,不包括第 n
个元素源码如下:
1 | _.initial = function(array, n, guard) { |
_.last
使用 _.last
用于返回数组中的最后一个元素。源码分析
1 | _.last = function(array, n, guard) { |
_.rest
使用 _.rest
函数用于返回数组中剩下的元素。源码分析
1 | _.rest = _.tail = _.drop = function(array, n, guard) { |
使用slice.call
其实是Array.prototype.slice.call()
的方法Array.slice(start, end)
// 用于裁剪数组,裁剪的数组包括start
不包括end
compact
使用 compact
用于去除所有为 假值
的数组成员关于假值:源码如下:false
,undefined
null
0
以及""
被称为假值, 因为强制类型转换会被转换为false
。
1 | _.compact = function(array) { |
_.filter
中存在一个判断:1 | if (someFn) { |
if
框内的元素someFn
进行强制类型转换。