美文网首页
lodash中常用的方法

lodash中常用的方法

作者: yaoyao妖妖 | 来源:发表于2019-12-27 16:51 被阅读0次

    lodash会拷贝一份新数组,不会对之前的数组进行影响

    数据的基础处理

    1. 浅拷贝&&深拷贝
    _.clone()
    _.cloneDeep(oldOption);
    
    1. 数组的分割,将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块
    // 一般在测试的时候用于较大返回数据的数据分割
    _.chunk(list)[size]
    _.chunk(['a', 'b', 'c', 'd'], 3);
    // => [['a', 'b', 'c'], ['d']]
    
    1. 排序,根据data的index字段进行降序排列,后面可以添加更多的字段和排序标准
    // 根据data的index字段进行降序排列
    let descData = _.orderBy(data, ['index'],['desc']);
    // 以 `user` 升序排序 再  `age` 以降序排序。
    _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
    
    1. 根据某个字段返回一个新数组
    var users = [
        { 'user': 'barney' },
        { 'user': 'fred' }
      ];
     var c7 =  _.map(users, 'user');  //[ 'barney', 'fred' ]
     var c8 = _.map(users,o=>o.user)  //[ 'barney', 'fred' ]
    

    5.分组,数组中的元素根据某个条件组成新的数组

    _.groupBy([6.1, 4.2, 6.3], Math.floor);
    // => { '4': [4.2], '6': [6.1, 6.3] }
     
    // The `_.property` iteratee shorthand.
    _.groupBy(['one', 'two', 'three'], 'length');
    // => { '3': ['one', 'two'], '5': ['three'] }
    

    6.元素的筛选,遍历 collection(集合)元素,返回 predicate(断言函数)返回真值 的所有元素的数组。 predicate(断言函数)调用三个参数:(value, index|key, collection)。

    var users = [
      { 'user': 'barney', 'age': 36, 'active': true },
      { 'user': 'fred',   'age': 40, 'active': false }
    ];
     
    _.filter(users, function(o) { return !o.active; });
    // => objects for ['fred']
     
    // The `_.matches` iteratee shorthand.
    _.filter(users, { 'age': 36, 'active': true });
    // => objects for ['barney']
     
    // The `_.matchesProperty` iteratee shorthand.
    _.filter(users, ['active', false]);
    // => objects for ['fred']
     
    // The `_.property` iteratee shorthand.
    _.filter(users, 'active');
    // => objects for ['barney']
    

    1. 多个数组的拼接
    let list1 = ['1'];
    let list2 = ['2'];
    let concatList = _.concat(list1, list2);
    // concatList  = ['1','2'];
    

    1. 两个数组之间进行差异数据的去除处理,会改变原先的数组
    // 删掉指定元素
    var array = [1, 2, 3, 1, 2, 3];
    _.pullAll(array, [2, 3]);
    console.log(array);
    // => [1, 1]
    
    // 根据gridid字段的值,去掉aList中bList数组的值
    let remainingSelectedList = _.pullAllBy(aList,bList,'gridid');
    // tips:
    _.differenceBy, 这个方法不会改变数组 `array`。
    
    1. 根据数组中的某个元素作为标准进行的去重
    // 简单版
    _.uniq([2, 1, 2]);
    // => [2, 1]
    // 进阶版
    let uniqList = _.uniqBy(list,(item)=> {
        return item.gridid
    })
    // or
    let uniqList = _.uniqBy(list,'gridid')
    

    1. 检查 value(值) 是否在 collection(集合) 中。如果 collection(集合)是一个字符串,那么检查 value(值,子字符串) 是否在字符串中, 否则使用 [SameValueZero]做等值比较。 如果指定 fromIndex 是负数,那么从 collection(集合) 的结尾开始检索。
    
    
    let trueOrFalse = _.includes(city.bottomLayerDeleteList,item.gridid)) ;
    var smartPerson = {
         'name': '戈德斯文',
         'gender': 'male'
     },
    smartTeam = ["戈德斯文", "杨海月", "柴硕", "师贝贝"];
    console.log(_.includes(smartPerson, '戈德斯文'));
    console.log(_.includes(smartTeam, '杨海月'));
    console.log(_.includes(smartTeam, '杨海月',2));
    _.includes() 第一个参数是需要查询的对象,
                 第二个参数是需要查询的元素,
                 第三个参数是开始查询的下标
    

    Tips:

    // 数组中的值是基础元素类型,可以直接进行等值比较
    _.pullAll(array, values);
    // 数组中的元素是对象类型,区别是这个方法接受一个 iteratee(迭代函数) 调用 array 和 values的每个值以产生一个值,通过产生的值进行了比较。iteratee 会传入一个参数: (value)。 
    _.pullAllBy(array, values, [iteratee=_.identity]);
    // 数组中的元素是对象类型,这个方法接受 comparator 调用array中的元素和values比较。comparator 会传入两个参数:(arrVal, othVal)。
    _.pullAllWith(array, values, [comparator]);
    

    相关文章

      网友评论

          本文标题:lodash中常用的方法

          本文链接:https://www.haomeiwen.com/subject/meedoctx.html