私の質問は簡単です。私は最近Ramdaで始まりました。私はそれが好きです、それは純粋な機能だからです。 concat関数では、引数として2つのリストしか受け付けないため、少し問題があります。したがって、3つ以上のリストを連結する必要がある場合は、concat(list1, concat(list2, concat(list3, list4)))
(4リスト連結の場合)のような関数を連結する必要があります。これを行うためのより良い方法はありますか?わかりません。ありがとう。ラムダでダブルコンカットを避ける
答えて
、あなた空のリストを初期値としてR.concat
を使用してリストを減らすことができます。
const concatAll = R.reduce(R.concat, []);
concatAll([[1, 2], [3, 4], [5, 6]]);
R.reduce
に直接リストを渡すだけです。
R.reduce(R.concat, [], [[1, 2], [3, 4], [5, 6]]);
あなたは別々の引数として各リストを取り、新しい可変引数関数を作成する場合は、R.unapply
と機能をラップすることができます。
const concatAll_ = R.unapply(R.reduce(R.concat, []));
concatAll_([1, 2], [3, 4], [5, 6]);
私はRamdaライブラリを使用していませんが、あなたが投稿したリンクで読んだドキュメントのnode.jsでこれを使用しているようです。その場合、node.js
の関数内のarguments
変数を使用して、n個のリストを入力として受け取る独自のconcat
関数を書くことができます。 arguments
変数は、基本的に関数に入力された引数の配列です。この場合
function myConcat() {
for (var i = 1; i < arguments.length; i++) {
concat(arguments[0], arguments[i]);
}
return arguments[0];
};
しかし、あなたはおそらく好きで、それを呼び出す必要があります:あなたが連結し、ご使用の環境を正確内容に応じて
list1 = myConcat(list1, list2, list3, list4);
助けてくれてありがとう、しかし私はこれを行うための機能的な方法を望んでいた。 @dandavisはそれを正しく得た。 –
@MateusFelipeそれは素晴らしいです。申し訳ありませんが、私はRamda.jsを使用していません – hargasinski
(ES2015が必要)、あなたができる:
const newList = [...list1, ...list2, ...list3];
そうしないと、コンカットを複数回呼び出すことができなくなりますが、作成するときれいにすることができます。
const newList = compose(concat(list1), concat(list2), concat(list4))(list3);
本当にあなたがマップしたり、より良い、減らしたいのに:
const newList = reduce((acc, x) => concat(acc, x), [list3], [list4, list2, list1]);
またはその内部の機能を削減するには、次のようになります。あなたはリストのリストを連結したい場合は
(acc, x) => [...acc, ...x]
@ScottChrisopherはクリーナーを減らしていますが、私のコンカットをポイントフリーにするのを忘れました。しかし、concatは実際にはラムダの合成能力の素晴らしい例ではありません。コールコンカットを '' .concat(a、b、c) 'でネイティブに呼び出すことができます。これはES2015コード[... a、。 ..b、... c] 'をbabelでコンパイルする –
- 1. Visual Studio 2017プロパティの生成時にラムダを避ける
- 2. スタックサイズの変更を避け、C#でスタックオーバーフローを避けるには
- 3. Pythonでカーソルを避ける
- 4. リレーでキャッシングを避ける
- 5. Railsでポーリングを避ける
- 6. ポストバックでモーダルポップアップクローズを避ける
- 7. iOSでコードテンポリングを避ける
- 8. ホットキーを避ける
- 9. メッセージブロードキャストを避ける
- 10. csvを避ける方法インデックスを避ける?
- 11. 回避方法ラムダ500MB一時記憶
- 12. ポップアップメニューはキーボードのクリックを避けることを避けます
- 13. 反復を避け、繰り返しを避ける - Excelの式
- 14. 避け、
- 15. ローカルスコープでダイナミックアロケーションを避け
- 16. 避けるのTextBox
- 17. 下のスクロールバーを避ける
- 18. React-Native:Text Wrappingを避ける
- 19. ジェンキンパイプラインスクリプトのキャッシュを避ける
- 20. ClickOnceブートストラップを避ける
- 21. NSCachedImageRepを避ける方法
- 22. スロットルダイナミクスDBを避ける
- 23. ポート転送を避ける
- 24. ObjectContext.Translate:列マッピングミスを避ける
- 25. jvmのクラッシュログを避ける
- 26. モバイルブラウザのズームを避ける
- 27. Pythonのループを避ける
- 28. Exoplayer - ビデオストレッチを避ける
- 29. UNIONクエリを避ける
- 30. タップのキャプチャを避ける
concatを減らす – dandavis
* reduce *関数を使用しようとしましたが、リストの代わりに別の関数を返します。あなたは私に例を挙げることができますか? –
http://bit.ly/1QRXCGf – dandavis