日常的に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で再現したい関数というのはいくつかあるので続編もできれば 書きたいと思っています。
では、今回は一旦ここまでで