Lodash.js:实用的工具库

如官方所介绍的那样,Lodash是一个具有一致接口、模块化、高性能的JavaScript工具库。一开始Lodash只是Underscore.js的一个fork,之后再原有的成功基础上取得了更大的成果,lodash的性能远远的超过了Underscore。因此,很多模块放弃了Underscore转入Lodash的怀抱。目前,lodash是npm仓库中依赖最多的库。使用lodash的全部函数需要使用全局的_就像是使用jQuery的函数前加上全局的$一样。lodash的使用极大的减少了你的代码量以及编写代码时间。[附上lodash的API文档](http://lodashjs.com/docs/) ]

循环

// 典型的循环写法
for(let i = 0;i < 5;i++){//todo
}// lodash写法
_.times(5,()=>{//todo
})

相比较,lodash的写法更为简洁,更加的直观易用。

过滤

_.compact([0,1,false,2,'',underfined,3])
// => [1,2,3]

直接通过一个函数删选掉所有假值的数据,比寻常的遍历更加方便。

var arr1 = [1,2,3,4]
var arr2 = _.remove(arr1,(n) => {return n%2 == 0
})//arr1 => [1,3]
//arr2 => [2,4]

通过_.remove() 的方法删选出了符合条件的数组元素,并构成一个新数组,同时对原数组进行了去除改元素的操作。

迭代

var arr = [{name: 'linge',son: [{name: 'liu'},{name: 'chen'}]
},{name: 'huangxiaoshu',son: [{name: 'diao'},{name: 'xu'}]
}]_.map(arr,'name')  //['linge','huangxiaoshu']
_.map(arr,'son[0].name')  //['liu','diao']

lodash中map的方法也是异常强大,它即可以用_.map(arr,()=>{//todo}) 如同原生js的形式对数组进行迭代,另外lodash中map方法能够遍历深度嵌套的对象属性,这一点在实际开发的时候是非常有用的。

对象扩展

//Lodash
_.assign({name: 'shidiao',age: 38},{sex: 'famale'},{name: 'liushitao'})
//ES6新增函数
Object.assign({name: 'shidiao',age: 38},{sex: 'famale'},{name: 'liushitao'})
//{name: 'liushitao',age: 38,sex: 'female'}

lodash中的_.assign只是浅拷贝,这与ES6新增的函数Object.assign功能重复了

个人建议优先使用Object.assign

深度克隆

个人认为深度克隆是lodash里面最好用的函数之一。众所周知,深度克隆JavaScript对象是挺麻烦的事情,但是lodash一个简简单单的_.cloneDeep方法帮你完成了繁琐的深度克隆操作,使用_.clone(obj,true)也能起到相同的作用,但是_.clone能够指定深度克隆的层级。

var obj = {name: 'linge',son: [{name: 'liu'},{name: 'chen'}]
};
var deep = _.cloneDeep(obj);
obj === deep //false

另外分享一篇文章深入剖析JavaScript的深复制

删选对象属性

var obj = {name: 'linge',age: 20
}_.omit(obj, 'age')  // {name: 'linge'}

这个方法在实际的开发项目中也相当实用,值得注意的是_.omit返回了一个新的数组,并不改变原数组。与_.omit相反_.pick方法可以挑选出指定的属性,组成一个新数组。

总结

总的来说,lodash还是非常实用的,它让代码看上去更加精简,不至于很臃肿,提高了代码的可读性以及逻辑性。虽然部分的方法以及可以被ES6的新方法进行代替,但丝毫掩盖不了它的价值。

本文同步自个人小站,欢迎点击

Lodash.js:实用的工具库相关推荐

  1. 60+ 实用 React 工具库,助力你高效开发!

    大家好,我是若川.持续组织了5个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  2. 抖之恒科技python常用库之工具库schema

    在Python编程语言中,有众多的开源库可以帮助程序员更加高效地完成各种任务.其中,Schema就是一款非常实用的工具库之一.本文将为您介绍Schema库的基本概念.使用方法以及它在Python编程中 ...

  3. 10个常用的JS工具库

    10个常用的JS工具库,80%的项目都在用! Avue Cloud 2022-01-26 09:46 图片 高手区别于普通人的重要一点是,他们善于利用工具,把更多的时间留给了规划和思考.写代码也是同样 ...

  4. 当前最流行的 js 工具库

    高手区别于普通人的重要一点是,他们善于利用工具,把更多的时间留给了规划和思考.写代码也是同样的道理,工具用好了,你就有更多的时间来规划架构和攻克难点.今天就给大家分享一下当前最流行的 js 工具库,如 ...

  5. 【JavaScript工具库】Lodash

    JS使用工具库:Lodash 作用:高效处理array.number.objects.string等对象,降低JS操作难度 特点:不会影响原实例对象,返回操作后的结果或新对象,语义化程度高 例如: 数 ...

  6. Licia:最全最实用的 JavaScript 工具库

    前言 在业务开发过程中,我们经常会重复使用日期格式化.cookie 操作.模板.浏览器判断.类型判断等功能.为了避免不同项目之间进行复制粘贴,可以将这些常用的函数封装到一起并发布 npm 包.在将近三 ...

  7. Lodash-一个一致性、模块化、高性能的 JavaScript 实用工具库介绍

    官网:https://www.lodashjs.com 一.为什么选择 Lodash ? Lodash 通过降低 array.number.objects.string 等等的使用难度从而让 Java ...

  8. JS工具库moment —— 实现日历

    moment moment是一个js工具库,这个库中封装的是日期时间的方法,功能很全面.可以去moment官网看看,它的中文文档介绍的也很详细,主要是看一下方法的使用.附上官网地址:moment.js ...

  9. 开发知识竞赛答题活动小程序过程中使用到的实用工具库介绍

    前言 我在做知识竞赛答题活动小程序经常需要处理一些比较基础的事情,比如时间.数组.数字.对象.字符串等处理,自己造轮子的话成本会比较高.这时候我们可以去找一些别人已经写好的开源模块或者开源库,我们直接 ...

最新文章

  1. ExtJs学习笔记(5)_Ajax示例
  2. python中 __name__及__main()__的妙处
  3. 【Linux】一步一步学Linux——lastlog命令(100)
  4. 模仿网易(163)首页Ajax功能中的鼠标延时触发
  5. linux python开发环境sql数据迁移到mysql_运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库...
  6. linux grep awk head 的使用
  7. 【手绘】A old painting ,drawed in middle school ,grade 8
  8. 安卓使用html文件遍历,安卓手机中使用html的input file,获取不到文件类型和文件名...
  9. 逍遥单机卡系统服务器ip,逍遥剑侠情缘私服架设源码+APP端+搭建教程
  10. 2022年2月沪牌拍牌出价策略
  11. 【戒焦戒躁,can win】Linux--IO缓冲区
  12. Java反射--获取类方法的泛型返回或泛型参数
  13. SQL必知必会 - 创建表的联结
  14. 谈谈三次握手四次挥手
  15. fedora 下常用软件安装
  16. n与9n--char3
  17. 你想要的宏基因组-微生物组知识全在这(2022.12)
  18. Vue解决SEO的方案
  19. 使用FLuke福禄克MicroScanner2 POE(MS-POE)检测以太网供电
  20. 怎么知道你训练的靠不靠谱?yolov3的mAP计算教程来了

热门文章

  1. python3 for index_Python3 抓取数据报错IndexError: list index out of range
  2. InterSystem Ensemble: BS- BP- BO
  3. 中国就业薪酬最高的十所大学
  4. 神经网络学习小记录39——MobileNetV3(small)模型的复现详解
  5. mysql所有任务为灰色_MySQL权限体系任务事理
  6. 《Android登堂入室》系列之Android的前世后生
  7. python实现翻转直角三角形
  8. Python selenium与pyautogui控制浏览器实现modis数据自动下载
  9. Kali2021.1 关于w3af的一些问题
  10. 电商系统中微服务体系中的分层设计和领域划分