2017-12-15 7 views
-5

numbers配列のサブ配列を渡されるreject関数は、そのサブ配列にあるものをすべて拒否する必要があります。また、ただ一つのリジェクト関数を書いて、より大きな値の関数とその結果を排除する方法があるならば。このjavascriptフィルタコードを書き込む方がいいですか?

このコードをさらに短縮する方法。どんな助けもありがとうございます。

var numbers = [0,1,2,3,4,5,6,7,8,9]; 
var greaterthanvalues = (numbers, value) => numbers.filter((number) => number > value) 
var t = greaterthanvalues(numbers, 5) 
var reject = (numbers) => 
      numbers.filter((number) => number < t[0]) 
reject(numbers, greaterthanvalues) 
+0

これはCodeReviewSEのより良い候補者かもしれません – Lexi

+0

コードの説明を共有してください。 –

+0

申し訳ありませんが、説明が追加されました。これが明らかになることを願っています。 – Walker

答えて

0

このコードで何をやっているのかによって異なります。あなただけのゴルフをしようとしている場合は、それを短くする1つの方法は、ラムダの定義を削除し、インラインで呼び出すことです。あなたの意見を反映する

var numbers = [0,1,2,3,4,5,6,7,8,9]; 
var greaterthanvalues = ((numbers, value) => numbers.filter((number) => number > value))(numbers, 5) 
var reject = ((numbers) => numbers.filter((number) => number < greaterthanvalues[0]))(numbers, greaterthanvalues) 

以下の更新の答えのようなもの/

var numbers = [0,1,2,3,4,5,6,7,8,9]; 
var reject = (numbers, lambdaRet) => numbers.filter((number) => number < lambdaRet[0]) 
reject(numbers, ((numbers, value) => numbers.filter((number) => number > value))(numbers, 5)) 

説明を編集:何をやっているの全体のアイデアを書き換えることなく、ここにありきの一つの方法です。 Rejectは、2つの配列をパラメータとして取る関数です。この関数を呼び出すと、最初の配列は数値として渡され、2番目はラムダ関数の結果として定義され、インラインと呼ばれます。これにより、良い基準を得ることができます

+0

ありがとう、greaterthanvaluesを書き込まず、代わりにそれをreject関数の中にマージする方法はありますか? – Walker

+1

私の答えは、そのようなものを反映するように更新されました。元の数値配列とラムダ関数の結果を渡す – rickjerrity

関連する問題