underscore.js 源码分析(八)
zip
unzip
object
indexOf
lastIndexOf
zip
_.zip(*arrays)
使用 zip
的目的是将数组中相应位置的值结合在一起。将分离的数组归并为一个数组。实例
1 | _.zip(['张宁宁', '张艺苇'], ['男', '女'], ['山东', '河北']); |
源码分析
自己写的:1 | /** |
- 对于传入的
array
需要进行判断,是否为null
对于传入的参数一定要进行类型判断
1 | _.zip = function(array) { |
unzip
使用 unzip
的目的是将归并后的数组分解为串联的一系列的新数组。实例
1 | _.unzip([['张宁宁', '张艺苇'], ['山东', '行唐']]); |
1 | _.unzip = function(array) { |
object
使用 object
用于将数组转化为对象的形式。_.object(list, [values])
传递一个单独的[key, value]
的列表,或者一个键的列表和一个值的列表。当传入 list
和 values
的时候, list
中的值会被作为返回对象的键, values
中的值会被作为返回对象的值。实例
1 | _.object(['moe', 'larry', 'curly'], [30, 40, 50]); |
源码解析
代码如下:1 | /** |
indexOf
_.indexOf(array, value, [isSorted])
使用 indexOf
用于返回 value
在 array
中的索引值, 当传入第三个值为数字的时候,表示从第几个数字进行索引。实例
1 | _.indexOf([1, 2, 3 ,4 ,1],1, 1); |
源码分析
1 | _.indexOf = function (array, item, isSorted) { |
- 判断一个数组是否存在:
length = array && array.length
- 使用
Math.max
的妙用
1 | Math.max(0, num); |
1 | function getMaxProfit(arr) { |
lastIndexOf
_.lastIndexOf(array, value, [fromIndex])
返回 value
在 array
中从最后开始的索引值,传入的 fromIndex
将从给定的索引值进行搜索。源码分析
1 | _.lastIndexOf = function(array, item, fromIndex) { |
sortIndex
_.sortIndex(list, value, [iteratee], [context])
使用 sortIndex
的目的在于使用二分法查找到 value
在 list
中的位置序号。实例
1 | _.sortedIndex([10, 20, 30, 40, 50], 35) |
源码分析
使用二分法进行比较获得到元素在数组中的位置的。1 | _.sortedIndex = function (array, obj, iteratee, context) { |
value
值在哪一个部分之内。