js的lodash库笔记

chunk

作用: 将一个一维数组拆分成一个二维数组,下标是从1开始

var arr = [1,2,3,4]
var newArr = _.chunk(arr, 3)
console.log("newArr", newArr[0]) // [[1,2,3], [4]]

compact

作用: 过滤掉所有结果为假的值

var arr = [1, 2, NaN, undefined, '', 0, false, null, 'a']
var newArr = _.compact(arr)
console.log("newArr", newArr) // [1, 2, 'a']

uniq

作用: 数组去重

var arr = [1, 2, 2, 1, 3, 'a', 'a'];
var newArr = _.uniq(arr)
console.log("newArr", newArr) // [1, 2, 3, 'a']

reject 和 filter

作用: 根据某个条件对数组进行过滤
之所以把这两个放在一起讨论,是因为这两个都是过滤,只是返回值相反

var arr = [
      {id:0, name: '阿布', age: 23},
      {id:2, name: 'bbb', age:30},
      {id:1, name: 'ccc', age:31},
      {id:1, name: 'ddd', age:32},
      {id:3, name: 'eee', age:33}
    ];
var newArr = _.reject(arr, ['id', 1])
console.log("newArr", newArr) 
// [{id:0, name: '阿布', age: 23},
// {id:2, name: 'bbb', age:30},
// {id:3, name: 'eee', age:33}]
var newArr1= _.filter(arr, ['id', 1])
console.log("newArr1", newArr) 
//[{id:1, name: 'ccc', age:31},
// {id:1, name: 'ddd', age:32}]

shuffle

作用: 数组乱序

var arr = [1, 2, 3, 4];
var newArr = _.shuffle (arr)
console.log("newArr", newArr) // [4, 2, 3, 1]

pick

作用1: 从数组中筛选对象

var arr = [
      {id:0, name: '11', age: 2},
      {id:0, name: '33', age: 20},
      {id:1, name: '22', age: 18}
    ]
var newArr = _.pick(arr, ['id', 0])
console.log('newArr', newArr, 'type', typeof(newArr)) // {id:0, name: '11', age: 2}

说明: 找到一个符合条件的就里面停止了

作用2 : 从对象筛选属性, 返回一个对象

var obj = {id:0, name: '11', age: 2};
var newArr1 = _.pick(obj, ['name', 'age'])
console.log('newArr1', newArr1, 'type', typeof(newArr1)) // {name: "11", age: 2}

keys

作用: 获取一个对象所有键,组成数组

var obj = {id:0, name: '11', age: 2};
var arr = _.keys(obj);
console.log(arr) // ['id', 'name', 'age']

clone和cloneDeep

拷贝对象,区别是一个用同一个内存空间,另一个新建一个内存空间,但是据说有bug

merge

作用: 合并两个对象

   var obj1 = {
     a: [{age: 2},{name:'张三'}]
   }
   var obj2 = {
     a: [{height:175},{weight:120}]
   }

   var newObj = _.merge(obj1, obj2);
   console.log(newObj) //结果 {a: [{age: 2, height: 175},{name:'张三‘,height:120}]}

random

作用: 获取某个区间的随机数

 var newObj = _.random(10, 20);
 console.log(newObj) // 结果是10到20之间的随机整数,包含10和20
 var newObj = _.random(10, 20, true);
 console.log(newObj) // 结果是10到20之间的随机小数

sample

作用: 获取数组中某个元素

var arr = ['第一个', '第二个']
var str = _.sample(arr);
console.log(str) 

find

作用: 从数组中查找某个元素

var arr = [
   {
	 id: 1,
     name: '张三'
    },
    {
     id: 2,
     name: '李四'
    }
  ]
  var str = _.find(arr, ['id', 1]);
  console.log(str) // { id: 1, name: '张三'}

降低一个维度

var arr = [1,[2,3,[4,5]]]
var newArr = _.flatten(arr)
console.log('newArr', newArr) // [1,2,3,[4,5]]

彻底降维

 var arr = [1,[2,3,[4,5]]]
 var newArr = _.flattenDeep(arr)
  console.log('newArr', newArr) // [1,2,3,4,5]

综合使用

找到id最大的一项

 var arr = [
     {
      id: 1,
      name: '张三'
     },
      {
      id: 3,
      name: '张三'
     },
     {
      id: 2,
      name: '李四'
     },
     {
      id: 4,
      name: '李四'
     }
   ]
   var str = _.find(arr, ['id', _.max(_.map(arr, 'id'))]);
   console.log(str) // {id: 4, name: '李四'}

猜你喜欢

转载自blog.csdn.net/qq_36939013/article/details/93384673