lodash中常用的方法

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中常用的方法)