现在在做的工程里,有几个工程里使用了lodash,发现使用特别多,有很多常用的像set get include map indexOf filter some forEach isEmpt assign cloneDeep等等是经常使用的,发现是真的很好用,但是还有很多其他lodash的方法并没有被充分使用,所有决定每天有空就记录几个lodash的方法
_.drop(array, [n=1])
对数组进行切片,去除
array
前面的n
个元素。(n
默认值为1。)不改变原数组,返回新数组
var arr = [1,2,3,4,5,6,7] var newarr = _.drop(arr,3) // arr => [1,2,3,4,5,6,7] // newarr => [4,5,6,7]
_.dropRight(array, [n=1]) 同drop只是从尾部去掉n个元素
_.dropWhile(array, [predicate=_.identity])
创建一个切片数组,去除
array
中从起点开始到predicate
返回假值结束部分。predicate 会传入3个参数: (value, index, array)。[predicate=_.identity]
(Function): 这个函数会在每一次迭代调用。var arr = [ { 'user': 'barney', 'active': false }, { 'user': 'fred', 'active': true }, { 'user': 'pebbles', 'active': true } ]; var newarr = _.dropWhile(arr, function(o) { return !o.active; });
// arr => 未改变原先的arr // newarr => [{ 'user': 'fred', 'active': true },{ 'user': 'pebbles', 'active': true }]
_.flatten(array)
将多维数组减少一层嵌套深度
_.flattenDeep(array)
将多维数组变成一维数组
_.fill(array, value, [start=0], [end=array.length])
使用
value
值来填充(替换)array
,从start
位置开始, 到end
位置结束(但不包含end
位置)。
值得注意的是,这个方法改变的是原数组,而不是产生一个新数组
并且end是结束的位置且不包含endvar arr=[1,2,3,4,5,6,7] _.fill(arr, '*', 1, 3); // => arr=[1, '*', '*', 4,5,6,7]
_.findIndex(array, [predicate=_.identity], [fromIndex=0])
这个方法类似
_.find
,区别是该方法返回第一个通过predicate
判断为真值的元素的索引值(index),而不是元素本身。最基本,最常用的,已经特别熟悉了,就不描述了。
_.indexOf(array, value, [fromIndex=0])
返回首次
value
在数组array
中被找到的 索引值, 如果fromIndex
为负值,将从数组array
尾端索引进行匹配。
array
(Array): 需要查找的数组。
value
(*): 需要查找的值。
[fromIndex=0]
(number): 开始查询的位置,默认为0。
var arr=[1,2,3,4,5,6,2,2,2] _.indexOf(arr, 2, 2); // => 6
var arr=[1,2,3,4,5,6,2,2,2] _.indexOf(arr, 2, -2); // =>7 var arr=[1,2,3,4,5,6,2,2,2] _.indexOf(arr, 2, -1); // =>8
_.initial(array)
去除数组
array
中的最后一个元素
_.intersection([arrays])
给定所有数组的交集
_.intersection([2, 1, 3], [4, 2, 5], [1, 2, 6]); // => [2] _.intersection([1], [4, 2], [1, 2]); // => []