_.find in lodash@3.x
在3.x 版本里是
const arr = [
{ id:1 , name: ''foo },
{ id: 2, name: 'bar' }
];
const o = _.find(arr, 'id', 1);
console.log(o.name); // foo
_.find in lodash@4.x
在4.x 版本里是
const arr = [
{ id:1 , name: ''foo },
{ id: 2, name: 'bar' }
];
const o = _.find(arr, ['id', 1]);
console.log(o.name); // foo
conclusion
就是说你不修改代码,直接升级v4的话,之前 _.find(arr, 'id', 1)
在v4中会被当作 _.find(arr, 'id')
来处理,最后一个参数被丢弃,即之前是使用 _.matchProperty
, 后面同样的代码是 _.property
.
- 没事别乱升级
- 升级一定要刷 changelog & migration guide
以上。
v4改了很多API,至今不敢升级。之前还吐槽过一些大神的项目用v2,现在了解他们的心情了
看到这个问题我直接哭了。。。。我之前每次用 _.find
都是 _find(fn)
,用来做相等条件查找。。。。现在看了你这种写法我才意识到我之前写了多少屎。。。
表示跳入下面这个大坑啦。
trimRight -> trimEnd
trimLeft -> trimStart
v4 改动不是一点点 pluck没了 现在直接用map
看来升v4还是比较有风险 自豪地采用 CNodeJS ionic
今天下午看到鲁大师版本到4.7了,比node刷得还快
@plusmancn 哈哈改名字还好点,全部替换既可。这个特么改参数。。。
2.x 貌似被deprecated, 会有提示吧~
@alsotang 不会出错哈哈~有了 arrow funtion 应该也挺方便了
=.= 直接fn 也挺好…
毕竟是主版本号升级,肯定不是向前兼容的,你跨主版本升级依赖包,你肯定要想一下兼容性。这肯定怪不得 lodash。
项目中用的3.x,没办法升级。。。
@wangchi 3.9吧~没有特别需求的话,可以用着v3
用的浅,只把contains改成includes就升级成功了。
@Axighi 有些不报错的会导致非常难找的bug。。。
身先士卒!
mk