underscore.js 源码分析(八)
zip unzip object indexOf lastIndexOfzip
_.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 值在哪一个部分之内。