2017-11-29 1 views
0

javacriptコードでは、配列のnumを出力するだけです。それは配列を出力するだけでなく、未定義を与える。したがって、論理の下では答えが得られますが、次の行では未定義を出力します。配列のインパクトを渡すと、コンソールで私は未定義になります

function getSecondLargest(nums) { 

     let deceding = nums.sort(function(a, b){return b-a}); 


    for(let i = 0; i<deceding.length ; i++) 
     { 
      if(deceding[i]>deceding[i+1]) 
       { 
        console.log(deceding[i+1]); 
        break; 
       } 
     } 


} 
+0

"次の行に" ...次は何の後?あなたはコンソールでこれを実行していますか?あなたの 'getSecondLargest'関数は何も返しません。つまり、' return undefined'と同じです。つまり、コンソールに表示されます。関数 –

+0

を呼び出した結果が私の中で働いているようです。 codepen:https://codepen.io/anon/pen/dZgdye?editors=1111 –

答えて

-1

私はこの機能をchrome consoleで実行しています。 実際には、関数は何も返しません。したがってコンソールundefinedです。 これはあなたと同じですか? http://prntscr.com/hgma9g

enter image description here

クロームコンソールはなかれコードの最後の行から返されたものをプリントアウト。したがって、値を返さずに代入または関数呼び出しの場合は、undefinedが出力されます。だから心配しないで、あなたの機能は期待通りに機能しました。

これを渡すには、関数にログインする値を割り当てて返す方法があります。 :)

+0

ご協力いただきありがとうございます。実際にこれはhakerrankの問題であり、定義されていないためにテストケースを渡さない –

+0

その要素が返ってくれてありがとうございました –

+0

喜んで助けました。私の答えを正しい答えbtw :)としてマークすることができれば本当にいいですね。または少なくとも私の役に立つ情報をupvoteすることができます。前もって感謝します – chiquyet

0

ふるい分けは[0, 1, 2]です。

あなたはi < deceding.lengthなので、iは0と2の間の範囲です(長さは3未満です)。

次に、console.log(deceding[i + 1]);を実行しますが、ループi + 1の後の反復では、配列の最後のインデックスである2より大きい値になります。つまり、未定義です。つまり、未定義のdeceding[3]を取得しようとします。

0

enter image description here

あなたは、実行環境を変更することはできますか?私はノード内でundefinedを見たことがありません。

関連する問題