以下の記事を読みました。
Proxy "it": アローすら面倒な怠惰JavaScripterのための遅延評価
arg => arg
のアロー関数部分がスマートでないことをProxyで解決するのは非常に面白いです。
別のアプローチとして、同じ処理をramdaで関数合成を使って書いてみます。
あまりramdaのヘビーユーザーではないので、間違っていたら教えて下さい。
yarn add ramda
const R = require('ramda')
const fn = R.map(
R.compose(
R.prop(2),
R.map(R.compose(parseFloat, R.trim())),
R.split(','),
R.prop('values')
)
)
const data = [
{ id: 1, values: '3, 1, 4, 1, 5' },
{ id: 2, values: '2, 7, 1, 8, 2 ' },
]
console.log(fn(data))
// => [ 4, 1 ]
args => args
のパターンはなく、データと処理も分離できました。
型的にも扱いやすいです。
少し冗長に感じるかも知れませんが、全てが関数で処理が分割可能なので、再利用性が高いです。
まあ、ちょっと関数脳過ぎるので普段使いはしていませんけれど。
おわりに
さらに他の手段としては、pipelineオペレータの仕様が入れば、こういったものをスマートに書くことができそうで楽しみです。
ramdaのcomposeとpipeは言わずもがな便利で、R.pathや R.curryの便利さはわかるが、これをライブラリの依存にぶっこんでくるのはサイズ的に許しがたい pic.twitter.com/8wUYV3S9Ad
— あかめ@無職.js (@akameco) September 6, 2017
coolではある。coolではあるが、混乱せず使えるユーザがいるかというと pic.twitter.com/WNtTjYuxz0
— あかめ@無職.js (@akameco) September 29, 2017