ミリ秒を読み取り可能な時間単位に分解する問題を考慮してください。あなたは整数をチャンクに分割する、機能的に
> breakupMillis(100000000)
Array [ 0, 40, 46, 3, 1 ]
は億ミリ秒は、正確に3時間、46分、40秒、1日であることを意味することをしなかった機能を持っていた想像してみてください。
機能は、他のもののために(仮に)その機能を使用することができる。この
> breakup(100000000, [1000, 60, 60, 24])
Array [ 0, 40, 46, 3, 1 ]
のように、弾性係数の配列を受け入れることによって一般化することができます
> breakup(1000, [8, 8, 8])
Array [ 0, 5, 7, 1 ]
十進数で1000があることを意味します01750を8進数で表します。ここで
が、私はこれを行うために書いた関数である。
const breakup = (n, l) => l.map(p =>
{ const q = n % p; n = (n - q)/p; return q; }).concat(n);
この機能は、それも参照透明だ、大丈夫ですが、私は2、完全にエステ、不満を持っています。
map
。これはreduce
の仕事のように感じますが、私はどのように見えません。- 変数
n
を書き換えます。私はvar
をまったく使用したくありません。 秘密var
を使用すると悪化します。
私の質問は約2番目です。変数を使用しないように関数を書き直すにはどうすればよいですか(実際は変わります)? map
が消えたら、私は肉汁としてそれを取る。
を私はちょっとこれはHaskellではコードレビュー – Tschallacka
に属している感じがあります '分割nl = zipでmod l。 scanl div n l' – Bergi