Lodash数组方法发现之旅-----First day

现在在做的工程里,有几个工程里使用了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是结束的位置且不包含end

var 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]);
// => []

 

posted @ 2019-07-17 21:34  Katydids  阅读(334)  评论(0编辑  收藏  举报