underscore.js 源码解析(六)
first initial last rest compactfirst
实例
_.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,undefinednull0以及""被称为假值, 因为强制类型转换会被转换为false。
1 | _.compact = function(array) { |
_.filter 中存在一个判断:1 | if (someFn) { |
if 框内的元素someFn进行强制类型转换。