React里使用lodash工具库

安装

使用命令 npm install lodash

页面引入

常见的引入方式
  1. 引入整个lodash对象: import _ from 'lodash'
  2. 按名称引入特定的函数: import { orderBy } from "lodash";
    tips: 这两种引入方式都会引入整个lodash库, 体积大;不推荐
建议引入方式
  1. 只引入需要的函数: import orderBy from 'lodash/orderBy'
  2. 使用 lodash-es: import { orderBy } from 'lodash-es'
    tips: 这两种方式只会引入对应的模块。

常用方法

concat

concat: 创建一个新数组,将原数组和任何数组或值连接在一起

用法:

js 复制代码
const array = [1,3];
const newArray = _.concat(array,'4',7,[[8]]);
console.log(newArray)   // [1,3,'4',7,[8]];
findIndex

findIndex :返回第一个判断为真值的元素的索引值。

用法:

js 复制代码
  const arr = [
    {name:'judy',age: 12},
    {name:'linda',age: 23},
    {name:'candy',age: 43},
    {name:'linda',age: 18},
  ]
  
  const newArr = _.findIndex(arr,function(o) {
    return o.name == 'linda';
  })
  console.log(newArr);  // 1

  const newArr1 = _.findIndex(arr,{name: 'linda'});
  console.log(newArr1)  //1

  const newArr2 = _.findIndex(arr,['name','linda']);
  console.log(newArr2,);  //1
orderBy

orderBy: 对数组进行排序,默认为升序;也可以指定为 "desc" 降序,或者指定为 "asc" 升序。

用法:

js 复制代码
const arr = [
  {name:'judy',age: 12},
  {name:'linda',age: 23},
  {name:'candy',age: 43},
  {name:'cindy',age: 18},
]
  // 根据名字排序,使用orderBy, 升序
  let arr1 = _.orderBy(arr,['name'],'asc');
  console.log(arr1)
  // 根据名字排序,使用orderBy, 降序
  let arr2 = _.orderBy(arr,['name'],'desc');
  console.log(arr2)
sample

sample: 获得一个随机元素。

用法:

js 复制代码
  const arr = [ 1,2,3,4,5,6];
  const newArr = _.sample(arr);
  console.log(newArr)   // 随机返回了一个元素
size

size: 如果是数组或者字符串就返回 length ; 如果是对象,返回其可枚举的属性个数

用法:

js 复制代码
  const str = 'string';
  console.log(_.size(str));  //6
  const arr = [1,2,3,4];
  console.log(_.size(arr));  // 4
  const obj = {name: 'linda',age: '24'};
  console.log(_.size(obj)) //  2
sortBy

sortBy 允许你指定一个属性来排序,默认为升序。如果需要降序排,需要借助reverse() ;或者使用上方 orderBy

用法:

js 复制代码
  const arr = [
    {name:'judy',age: 12},
    {name:'linda',age: 23},
    {name:'candy',age: 43},
    {name:'cindy',age: 18},
  ]
 // 根据名字排序,使用sortBy 升序
 let arr3 = _.sortBy(arr,['name']);
 console.log(arr3)
 // 根据名字排序,使用sortBy先进性升序排序,然后使用reverse()函数进行反转
 let arr4 = _.sortBy(arr,['name']).reverse();
 console.log(arr4)
debounce

debounce(func,wait ,options): 创建一个 debounced (防抖动)函数,该函数会从上一次被调用后,延迟 wait 毫秒后调用 func 方法;可以提供一个 options(选项) 对象决定如何调用func方法。

用法:

js 复制代码
// 处理屏幕变化的函数
  const handle = () => {
  };
  // 使用debounce,避免窗口在变动时消耗过大。
  window.addEventListener('resize',_.debounce(handle,3000))
throttle

throttle(func,wait,options): 创建一个throttle节流函数,在 wait 秒内最多执行 func 一次的函数。

用法:

js 复制代码
// 处理滚动事件
  const handleScroll = () => {
  };
  // 使用throttle,避免窗口在变动时消耗过大。
  window.addEventListener('scroll',_.throttle(handleScroll ,3000))
delay

delay: 延迟多少时间后执行函数

使用:

js 复制代码
  _.delay(function() {
    console.log('延迟执行了~~~')
  },500)
clone

clone : 创建一个 浅拷贝

使用:

js 复制代码
  const arr = [{name: 'linda',age: 13}];
  var newArr = _.clone(arr);
  console.log(arr[0] === newArr[0]); // true
cloneDeep

cloneDeep : 创建一个 深拷贝

使用:

js 复制代码
  const arr = [{name: 'linda',age: 13}];
  var newArr = _.cloneDeep(arr);
  console.log(arr[0] === newArr[0]); // false

总结

更多lodash的方法及使用,可以参考中文官网文档: https://www.lodashjs.com/

相关推荐
前端一小卒1 小时前
一个看似“送分”的需求为何翻车?——前端状态机实战指南
前端·javascript·面试
syt_10131 小时前
Object.defineProperty和Proxy实现拦截的区别
开发语言·前端·javascript
长安牧笛2 小时前
儿童屏幕时间管控学习引导系统,核心功能,绑定设备,设时长与时段,识别娱乐,APP超时锁屏,推荐益智内容,生成使用报告,学习达标解锁娱乐
javascript
栀秋6662 小时前
深入浅出链表操作:从Dummy节点到快慢指针的实战精要
前端·javascript·算法
青青很轻_2 小时前
Vue自定义拖拽指令架构解析:从零到一实现元素自由拖拽
前端·javascript·vue.js
xhxxx2 小时前
从被追问到被点赞:我靠“哨兵+快慢指针”展示了面试官真正想看的代码思维
javascript·算法·面试
树下水月2 小时前
纯HTML 调用摄像头 获取拍照后的图片的base64
前端·javascript·html
蜗牛攻城狮2 小时前
Vue 中 `scoped` 样式的实现原理详解
前端·javascript·vue.js
豆苗学前端2 小时前
前端工程化终极指南(Webpack + Gulp + Vite + 实战项目)
前端·javascript
比老马还六2 小时前
Bipes项目二次开发/海龟编程(六)
前端·javascript