关于lodash中_.set()和_.setWith()方法的辨析
直接截取官网文档的定义:
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414114530904-2126432183.png)
之前一直不是很明白最后那个customizer有什么用,今天正好碰到,记录一下。
关键在于第二个参数中,路径是数字时会产生歧义。
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414120215296-251899307.png)
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414120256805-1047378302.png)
数字大小并不会有影响:
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414120420052-1352356528.png)
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414120503124-765550038.png)
如果使用_.setWith并最后添加Object参数,便可以得到本来想要的对象
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414120701940-862888535.png)
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414120758101-307215163.png)
如果路径中没有纯数字字符串,则set和setWith无异:
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414121032379-297128336.png)
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414121108225-732154946.png)
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414121238411-784194498.png)
![](https://img2020.cnblogs.com/blog/1559087/202004/1559087-20200414121325560-1469812812.png)
可以看到两者并没有区别
lodash中的_.set和_.setWith是js中很好用的对象修改和创建函数,尤其是对于大量数据,可以做到层次化的嵌套对象创建。不过官网文档和网上实例都很少,以上作为记录备忘。
lodash中的_.set和_.setWith是js中很好用的对象修改和创建函数,尤其是对于大量数据,可以做到层次化的嵌套对象创建。不过官网文档和网上实例都很少,以上作为记录备忘。