lodashでよくつかう関数
JavaScript でコード書く時に lodash 使わないとかもう意味わかんないレベル。競合に underscore があるけど、lodash の方が開発スピード(≒コミット数)に分がある。
両者に git log --reverse
で初回コミット(2009年8月25日)確認して気づいたけど、元は同じソースでどっかのタイミングで lodash に分岐した模様。
ライブラリ | コミット数 | バージョン |
---|---|---|
lodash | 4,953 | v3.7.0 |
underscore | 1,995 | v.1.8.3 |
(2015-04-23調べ)
なので、迷ったら lodash で良い。
_.each
最近はもう for 文とかあまり使ってない。
var numbers = [1, 2, 3, 5, 7, 11]; _.each(numbers, function(n) { console.log(n); });
使いわける機会があるとすれば、return, break, continue 文を使いたい場合。これは for 文のが読み易い。全走査したい場合はもう全部 _.each で良い。
_.map
オブジェクトの一要素を配列にしたいときにかなり良く使う。 例えばソーシャルゲームのカード情報を持つ card というオブジェクトがあるとする。
var card = { cardId: 'golem', name: 'ゴーレム', parameter: { atk: 2300, def: 1500, spd: 800 } };
こんな感じのモンスターを表すオブジェクトが複数あリ Array 型か Object 型 だったとする。ここから cardId のだけの配列を作りたい場合。以下にように書くだけで済む。
var cardIds = _.map(cards, 'cardId');
_.map を知らない人はこういう書き方になるので冗長。
var cardIds = []; _.each(cards, function(card) { cardIds.push(card.cardId); });
lodash を知らない人はこういう書き方になってもっと冗長。
var cardIds = []; for (var i = 0, len = cards.length; i < len; i++) { var card = cards[i]; cardIds.push(card.cardId); });
_.sum
Array や Object の数値を合計したいとき用。
var array = [1, 10, 100]; var obj = { a: 2, b: 20, c: 200 }; var total1 = _.sum(array); //111 var total2 = _.sum(obj); //222
var array = [ { id: 'key1', quantity: 3 }, { id: 'key2', quantity: 30 }, { id: 'key3', quantity: 300 } ]; var total = _.sum(array, 'quantity'); //333
_.size
var fruitsArray = ['apple', 'orange', 'grape', 'melon']; var fruitsObj = { apple: 298, orange: 480, grape: 380, melon: 2800 }; _.size(fruitsArray); //4 _.size(fruitsObj); //4
配列なら length プロパティがあるので、fruitsArray.length
でサイズがわかるけど、オブジェクトは Object.keys(fruitsObj).length
しないといけなくて冗長。
_.size なら一発。