ES6推广后,是否还需要lodash
大多数时候lodash 仅用作实用程序。但它实际上具有ES6 所没有的功能。
Immutable: 所有方法都不会修改作为参数传递的原始对象,而仅返回新对象。通过Compose: 流程组合新功能,使它们更加灵活和可重用。 如果加工过程复杂。惰性求值显着提高了计算性能。 Flow已经有这种性能优化,但是原生链调用没有这种性能优化。
模块组成
Array: 适用于数组类型,如填充数据、查找元素、数组切片等操作Collection: 适用于数组和对象类型,对字符串进行分组、查找、过滤、部分操作等操作适用于Function: 适用于功能类型节流、延迟、缓存、设置挂钩等操作。Lang: 一般适用于多种类型,常用于执行类型判断或类型转换。 Math:适合数字类型,常用于执行数学运算。 Number:适合生成随机数并将值与数值区间进行比较。 关系Object: 适用于对象类型,常用于对象创建、扩展、转换、检索、收集等操作。 Seq: 通常用于创建链式调用以提高执行速度。性能(延迟计算) String: 适用于字符串类型Date: 显示当前时间Util: 工具函数属性
函数式编程特性
lodash/fp 模块提供了类似函数式编程的开发方式,其内部函数封装了不可变的自动函数。 Curried、iteratee-first、data-last(官方引入)特性
修改Arity 以固定参数数量,方便对重新排序的参数进行柯里化,重新定位参数,并促进函数之间的聚合。 Capped Iteratee Argument,封装Iteratee 参数。 新方法
常用场景
N次循环
使用时间码循环。
_.times(5, function(){ //.});
深层查找属性值
使用map获取深层对象值
_.map(ownerArr, 'pets[0].name');
个性化
使用uniqueId 生成唯一字符串。使用partial来预先初始化函数参数的一些参数。
深拷贝
cloneDeep
随机数的生成
random
对象扩展
_.assign 与Object.assign 具有相同的功能。 es6 函数
筛选属性
pickomit 方法
随机元素
随机选择_.sample: 中的元素数量。获取数据并返回一个新数组。
JSON.parse的错误处理
无法保证传递的JSON 对象正确。使用_.attempt 而不是try catch。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。