Ruby On Rails

Jun 11, 2018

Railsの便利メソッドをlodashでやると

日常的にRailsでサーバ側を書いていても、ふとした時にjs書かないといけない時ってありますよね。 そのほかにも、これまでサーバ側でRuby書いてきたけど、せっかくだからフロント側も勉強したいなみたいな形で Jsを触り始めることもあるかと思います。

jsもES6以降で便利なメソッドも増えたみたいですが、仕事で使ってみるとついついlodashとかライブラリを使いたくなってしまいます。 そんなこんなで、Railsのメソッドをlodashでやるには?みたいなところをまとめてみました。

 

slice

 

railsのsliceはハッシュから必要なキーだけを取得して返却してくれます。これがActiveRecordのオブジェクトにも 使えたりして便利なので、Jsでも同じことがやりたい!!となると思います。

 

rails

fruit = { apple: 'red', banana: 'yellow', cucumuber: 'green'}
fruit.slice(:apple, :banana)
#  {:apple=>"red", :banana=>"yellow"}

lodash

const fruit = { apple: 'red', banana: 'yellow', cucumuber: 'green'}
_.pick(fruit, ['apple', 'banana'])
// { apple: 'red', banana: 'yellow' }

 

except

 

exceptはsliceの逆で、ハッシュのキーから不要なものを取り除いてくれます。

rails

fruit = { apple: 'red', banana: 'yellow', cucumuber: 'green'}
fruit.except(:apple, :banana)
# {:cucumuber=>"green"}

lodash

const fruit = { apple: 'red', banana: 'yellow', cucumuber: 'green'}
_.omit(fruit, ['apple', 'banana'])
// { cucumuber: 'green' }

 

Pluck

 

pluckは配列のハッシュから、指定したキーの配列で返却してくれます。lodashでは、0.4以降pluckは廃止されmapで代用できるようです。

rails

array = [
 { id: 1, name: 'John', age: 19 },
 { id: 2, name: 'Mary', age: 30 },
 { id: 3, name: 'Smith', age: 25 }
]
array.pluck(:name)
# ["John", "Mary", "Smith"]

lodash

array = [
 { id: 1, name: 'John', age: 19 },
 { id: 2, name: 'Mary', age: 30 },
 { id: 3, name: 'Smith', age: 25 }
]

array.pluck(:name)
_.map(array, 'name')
// ["John", "Mary", "Smith"]

配列の引き算(差集合)

これはRails(Active Support) というよりはRubyですが、

Ruby(Rails)

 [1, 2, 3] - [1, 3]
# [2]

loadash

_.diffrence([1,2,3], [1,3])
// [2]

Compact

compactはnilであるハッシュのキーを取り除いたハッシュを返却します。 微妙にい意味合いは違いますが、lodashでもfalseyなkeyをオブジェクトから取り除いてくれます。

Rails(Ruby)

fruit = { apple: 'red', banana: nil, cucumuber: 'green'}
fruit.compact
# {:apple=>"red", :cucumuber=>"green"}

lodash

fruit = { apple: 'red', banana: null, cucumuber: 'green'}
_.omitBy(fruit, _.isNull)
// { apple: 'red', cucumuber: 'green' }

ほかにもありそうですが一旦ここまでで

ちょっとほかにもありそうですが、今思いつくのはここまでですので、一旦ここで区切らせて頂きます。 今思いましたが、ほかにもtapなどなどjsで再現したい関数というのはいくつかあるので続編もできれば 書きたいと思っています。

では、今回は一旦ここまでで

関連記事

記事検索

気になるサイト内の記事を検索する

プロフィール

バンクーバー在住のフルスタックエンジニアです。React, Ruby on Rails, Go などでお仕事しています。職場がトロントなので日本、トロント、バンクーバーの三つの時天空を操って生活しています。

プロモーション