1
Ramada.jsのtransduceを使用して、最適化のために中間変換((2xフィルタリング、1xソート)なし)を使用するにはどうすればよいですか?今の最適化のためにJavaScriptで変換を使用する
import { curry, tap, pipe, filter, propEq, sortBy, prop } from 'ramda'
//const debugLog = curry((prefix, data) => console.log('@', prefix, data))
const func = (data, name) =>
pipe(
//tap(debugLog('pipe')),
prop('tasks'),
//tap(debugLog('prop')),
filter(propEq('username', name)),
filter(propEq('complete', false)),
sortBy(prop('dueDate'))
)(data)
export default func
私はそのようなものを見つけましたが、それでも私は自分のソリューションにそれを実装に問題があります。
var numbers = R.range(0, 1000000)
var transducer = R.pipe(
R.map(R.add(1)),
R.map(R.multiply(2)),
R.filter(x => x % 2 === 0)
)
R.transduce(transducer, R.add, [], numbers)
私はSORTBYがドキュメントを追加する傾向がある(トランスデューサで使用することができ、「トランスがリスト位置に指定されている場合、トランスデューサとして行為。」を信じていませんそれ以外の場合は、2つのフィルタ間の中間データ構造を削除する最も簡単な方法は、predicate - > filter(propEq( 'username'、name)、propEq( 'complete'、false))と –
合意されたトランスデューサでは、個々の要素の操作を組み合わせることができますが、ソートはより大きなデータ構造にわたって動作します。最初のものをソートしてから2番目のものをソートすることができます。 –