
目次
LodashはUnderscore.jsの上位互換?
よくLodashはUnderscore.jsの上位互換と言われる。これはUnderscore.js(1.9.1)で使用できる_.ではじまるメソッド数が121なのに対しLodash(4.17.11)は325と大幅に多く、できることが多いからだ。
LodashとUnderscore.jsでは互換性があるメソッドとないメソッドがあり、Lodashでは使えるがUnderscore.jsでは使用できないメソッドもあるため注意が必要。
それぞれのバージョンを調べる方法
LodashはUnderscore.jsの公式サイトにアクセスしてConsoleで_.VERSIONを実行すると、それぞれ4.17.11と1.9.1が返ってくる。
2019年7月現在ではUnderscore.jsの最新バージョンは1.9.1なので2以上の値が返ってきた場合はLodashが使用されていることになる。
Lodashのバージョン別ドキュメントの場所
Lodashの公式サイトのDcumentationの左上にはバージョン切り替えのセレクトボックスがあるが、4.17.11, 3.10.1, 2.4.2, 1.3.1しか選択できない。
例えば3.2.0のドキュメントが見たくてURLのバージョン部分を/docs/3.2.0に変えても見ることはできない。
古いマイナーバージョンのドキュメントはGitHubのほうにあるので、3.2.0のドキュメントを見たい場合は下記のURLにアクセスする。
https://github.com/lodash/lodash/tree/3.2.0/doc
最新版Lodashで使用できないメソッド
Underscore.jsで使用できるが最新版Lodashで使用できないメソッドが14種類存在する
特に_.where, _.contains, _.pluckなどはUnderscore.jsでは使用頻度が高いメソッドなのでLodashに移行する際は必ず覚えておこう。
_.where | _.findWhere | _.contains | _.pluck |
_.indexBy | _.object | _.compose | _.restArguments |
_.allKeys | _.mapObject | _.pairs | _.extendOwn |
_.matcher | _.value |
_.pluckはLodashでもv3まで使用できたが、v4は_.mapしか使用できない。
// v3は_pluckと_.mapの両方使用可能 // v4は_.mapしか使用できない _.pluck(obj, 'a') _.map(obj, 'a') // => [1, 2]
Lodashもバージョンが違えば使えないメソッドが出てくる。
例えば_.uniqueはv3まで使用できたが、v4は_.uniqしか使用できない。
// v3は_.uniqueと_.uniqの両方使用可能 // v4は_.uniqしか使用できない var arr1 = _.uniq([1, 1, 2, 3, 3]) var arr2 = _.unique([1, 1, 2, 3, 3]) console.log(arr1) console.log(arr2) // => [1, 2, 3]
Lodashをあえて使用しないことも必要
_.where, _.containsが最新版のLodashでなくなっているが、これはJavaScript標準の.filterや.includesで対応できるからだ。
将来的にJavaScriptだけで実装できるメソッドが最新バージョンで削除される可能性があるので、代用可能な場合はなるべくLodashで使用しないほうが良いだろう。