lodash常用方法
发布时间:2025-05-20 06:28:02 发布人:远客网络
一、lodash常用方法
说明:其实就是如果没有这个值以后就会返回undefined,而不会像js中没有这个值就会报错
说明:执行深比较来决定两者的值是否相等。
说明:创建一个移除了所有假值的数组。例如:false、null、 0、""、undefined,以及NaN都是“假值”.
5._.truncate([string=''], [options])
说明:截断字符串,如果字符串超出了限定的最大值。被截断的字符串后面会以 omission代替,omission默认是"..."
8..findIndex(array, [predicate=.identity])
说明:返回符合元素的 index,否则返回-1。
二、lodash和lodash-es有什么区别呢
1、lodash是默认的 commonjs版本,适用于常规的模块化环境。它提供了一系列的工具函数,用于简化 JavaScript编程过程,例如数组操作、对象处理等。
2、而 lodash-es则是 lodash的 es modules版本。这种版本特别适合用于小型项目或对文件体积有严格要求的情况。与 lodash相比,lodash-es的体积更小,因为去除了不需要的代码部分,更适合用于构建过程中的打包。
3、不论是在使用打包工具构建项目时,还是直接引入到代码中,lodash和 lodash-es都可以实现其功能需求。然而,选择其中一个版本则取决于项目的具体需求和对性能、体积的考虑。对于大型项目,通常 lodash能提供更全面的功能和更好的兼容性。而对于小型项目或注重优化文件体积的场景,lodash-es则是更优选择。
三、lodash源码分析——deepclone
lodash源码分析——deepclone,基于4.17.10版本
本文从源码阅读初心者的角度,一句一句深入分析lodash的deepclone方法,从入口函数开始,逐步解析每一个关键步骤。
入口函数调用cloneDeep.js,通过掩码位判断是否进行深拷贝与复制symbol类型。
在baseClone.js中,通过内部函数调用baseClone进行主要逻辑处理。先判断对象是否为普通对象,然后使用getTag方法获取对象的类型标识。
getTag方法通过baseGetTag进行判断,获取symbol类型时返回symbol.toStringTag属性。现代浏览器支持返回特定类型标签,如内置对象类型或新出现的类型如Map、Promise等。对于自定义类创建的对象,若无特定标签则返回[object Object]。
继续解析baseClone逻辑,重点在于针对不同类型的对象进行区分处理,包括数组、普通对象、函数等。函数和空对象返回{},不进行深拷贝。
在处理复杂类型如数组和对象时,baseClone采用initCloneArray和copyArray函数优化拷贝过程。对于循环引用问题,通过构造栈结构解决,保证了代码的兼容性和易用性。
对于symbol类型,通过Object.getOwnPropertySymbols方法获取symbol的副本,确保深拷贝操作的完整性。
总结,lodash的deepclone方法通过Object.prototype.toString.call得到对象的类型标识,根据标识进行针对性处理,同时解决循环引用问题,兼容现代浏览器的symbol类型。然而,对于function类型仍然采用引用拷贝,未进行深拷贝处理原型链上的属性。
本文由某初学者撰写,旨在分享lodash deepclone源码分析过程,提供一个从入门到深入理解的路径参考。完成日期:2018年7月22日。