学习lodash——这一篇就够用

学习lodash——这一篇就够用在 ES6 盛行 ES78 马上就要出来的情况下 我们还是需要懂得一些工具库的使用 比较推荐的是 lodash 在下面就会谈一谈为什么要使用 lodash 和 lodash 的基本使用 nbsp 首先要明白的是 lodash 的所有函数都不会在原有的数据上进行操作 而是复制出一个新的数据而不改变原有数据 类似 immutable js 的理念去处理 nbsp lodash 是一套工具库 内部封装了很多字符串 数组 对象

在ES6盛行,ES78马上就要出来的情况下;我们还是需要懂得一些工具库的使用,比较推荐的是lodash。

在下面就会谈一谈为什么要使用lodash和lodash的基本使用。

 

首先要明白的是lodash的所有函数都不会在原有的数据上进行操作,而是复制出一个新的数据而不改变原有数据。类似immutable.js的理念去处理。

 

lodash是一套工具库,内部封装了很多字符串、数组、对象等常见数据类型的处理函数。

 

lodash的引用

 

 import _ from 'lodash'

用一个数组遍历来说明为什么要使用lodash

常规数组遍历

 

agent.forEach(function (n,key) { agent[key].agent_id = agent[key].agent_name; return agent; })

使用lodash来遍历

 

  

_.forEach(agent,function(n,key) {

    agent[key].agent_id= agent[key].agent_name

})

这是一个常见的forEach的数组遍历,使用了lodash过后,_.forEach()这是一个值,而不是一个函数。就可以直接

const arr = _.forEach();

 

这时候arr就是新的数组agent。而在常规的js数组遍历中,还需要考虑return的值和this的指向问题。虽然这样看起来,二者相差不大,但是在实际的开发过程中,熟练的使用lodash能大大的提高开发的效率。

再来总结一些lodash常用函数(还是推荐大家能去官网把所有的函数看一遍增加一些印象)

 

1.chunk,将数组进行切分。(也是官网的第一个函数)

 

const arr = [1,2,3,4,5,6,7,8,9]; _.chunk(arr,2); // =>[[1,2],[3,4],[5,6],[7,8],[9]]

这个函数把数组按照一定的长度分开,返回新的数组。(片段化数组)

 

2.compact,去除假值。(将所有的空值,0,NaN过滤掉)

 

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

 

3.uniq,数组去重。(将数组中的对象去重,只能是数组去重,不能是对象去重。)

 

_.uniq([1,1,3]) // => [1,3]

这跟介绍的第二个函数compact有很好的配合作用。(后端接口传来的数据很多是有重复或者空值的,这时候就可以使用两个函数来过滤数据。ladash只是最基础的库,其实可以将几个函数封装起来组件自己的库。)

 

4.filter和reject,过滤集合,传入匿名函数。(二者放在一起讨论的原因是,两个函数类似但返回的值是相反。)

 

_.filter([1,2],x => x = 1) // => [1] _.reject([1,2],x => x=1) // => [2]

这两个过滤器,第二个参数值是false的时候返回是reject的功能,相反是true的时候是filter。

 

5.map和forEach,数组遍历。(相似)

如果不明白map和forEach有什么相似的可以百度一下,简单说一下不同点就是,map的回调函数中是支持return返回值的。

不过二者都不改变原来的数组。

 

_.map([1,2],x => x+1) // => [2,3]

推荐使用map。

6.merge,参数合并。(merge函数像是Git的merge分支操作一样,将两个参数合并在一起。)

官网的解释是,递归的将源对象和继承的可枚举字符串监控属性合并到目标对象中。源对象从左到右引用,后续来源将覆盖以前来源的属性分配。

 

var object = { 'a': [{ 'b': 2 }, { 'd': 4 }] }; var other = { 'a': [{ 'c': 3 }, { 'e': 5 }] }; _.merge(object, other); // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }

这里就像借用官网的代码来解释一下了。在实际开发中,前端在接口的请求可以merge一下之前的query和现在改变的查询的值,再去请求后端接口的数据。

 

7.extend,类似参数对象合并。

 

function Foo() { this.a = 1; } function Bar() { this.c = 3; } Foo.prototype.b = 2; Bar.prototype.d = 4; _.assignIn({ 'a': 0 }, new Foo, new Bar); // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }

 

8.cancat,数组连接

var array = [1]; var other = _.concat(array, 2, [3], [[4]]); console.log(other); // => [1, 2, 3, [4]] console.log(array); // => [1]

可以接受多个参数,将多个参数合并为一个数组元素。

 

9.keys ,取出对象中所有的key值组成新的数组。

function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.keys(new Foo); // => ['a', 'b'] (iteration order is not guaranteed) _.keys('hi'); // => ['0', '1']

 

 

类似object.keys(),返回对象中可枚举属性的数组。

待更新…

以上都是个人总结出来的,肯定也有不对的地方,欢迎交流指点,互相学习

 




 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228039.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:58
下一篇 2026年3月16日 下午7:58


相关推荐

  • 一文读懂BERT(原理篇)

    一文读懂BERT(原理篇)一文读懂BERT(从原理到实践)2018年的10月11日,Google发布的论文《Pre-trainingofDeepBidirectionalTransformersforLanguageUnderstanding》,成功在11项NLP任务中取得stateoftheart的结果,赢得自然语言处理学界的一片赞誉之声。本文是对近期关于BERT论文、相关文章、代码进…

    2022年5月25日
    39
  • 前端开发写代码哪个软件更好用?

    前端开发写代码哪个软件更好用?群里的朋友,经常问到web前端开发写代码用那个软件好?今天在这里统一回答下,主流的web前端开发写代码的软件有这些Webstorm、Vscode、SublimeText、HBuilder、Dreamweaver、notepad++、editplus等,做前端这么多年了,下面谈下我的使用感受吧。1.WebStorm【推荐】WebStorm是jetbrai…

    2022年5月30日
    42
  • 数据库的五种索引类型[通俗易懂]

    数据库的五种索引类型[通俗易懂]本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname=’css’,如果要拿这条数据的话需要些的sql是SELECT*FROMawardWHEREnickname=’css’一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描1…

    2022年4月28日
    79
  • 懒人教程:如何在固态硬盘安装Win11系统?3种方法全解析!

    懒人教程:如何在固态硬盘安装Win11系统?3种方法全解析!

    2026年3月16日
    2
  • linux shell 进去 uefi,怎么进入EFI Shell及怎么为UEFI截图「建议收藏」

    linux shell 进去 uefi,怎么进入EFI Shell及怎么为UEFI截图「建议收藏」目前大多数主板都采用了UEFI代替了原始的BIOS,其功能与可玩性也大大的增强了。EFIShell功能相当强大。有些主板内建EFIShell,有些没有,但也可以将EFIShell放进U盘中加载EFIShell以达到同样的效果。EFIShell自带许多功能强大的应用软件。它本身就是一个小小的操作系统了。这里我提供华擎UEFI进入EFIShell的办法及对截图工具的简要说明。$v1z’…

    2022年7月24日
    34
  • Gitea搭建及使用

    Gitea搭建及使用文章目录安装 Linuxwindows 安装 Linux 直接参考这个即可 亲测可以 https www moerats com archives 578 gitea 依赖 git 得先看看有没有装 git https www cnblogs com fuyuanming p 5804695 html 记得关闭 Linux 的防火墙 不然网站进不去 如何关闭防火墙 https www cn

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号