2012-03-29 4 views
0

何が問題なのかを把握しています。他のソリューションの1つを見ていましたが、問題の別のバージョン用でした。Resig Advanced Javascript p#43

John Resig Advanced Javascript Question

Resig氏は以前、この問題には全くチュートリアルの「原型」または「スライス」を使用していないので、具体的には、古い問題に言及、私は別の解決策があるのか​​どうかと思いまして。

http://ejohn.org/apps/learn/#43

は、ここでの問題の現在のテキストです:私も理解少し問題を抱えている

function highest(){ 
    return arguments.sort(function(a,b){ 
    return b - a; 
    }); 
} 
assert(highest(1, 1, 2, 3)[0] == 3, "Get the highest value."); 
assert(highest(3, 1, 2, 3, 4, 5)[1] == 4, "Verify the results."); 

なぜ「B - 」リターンインチbまたはaだけに変更した場合、すべてのテストに合格します。

+0

引数コレクションが配列ではないという事実を指していますか?そのため、このエラーが発生します:ERROR Object#にはメソッド 'sort'はありません(例を参照してください:http://debuggable.com/posts/turning-javascript-s-arguments-object-into-an-array: 4ac50ef8-3bd0-4a2d-8c2e-535ccbdd56cb) –

+0

また、デフォルトのソート動作はレオグラフィックスです。[7,30,200]の配列は[200,30,7]としてソートされます。したがって、数値の正しい並べ替えを取得するには、比較関数を渡す必要があります。特定のエラーが表示されていますか? –

答えて

0

sort関数の問題を参照してください。あなたが最初にアサートの数字の順序を変更する場合:

assert(highest(3, 1, 1, 2)[0] == 3, "Get the highest value."); 

が、その後リターンAをやっまたはbを返し、もはや動作しません。彼らが現在の主張で働くのはちょうど偶然のことです。

Bよりも高くランク付けされている場合、それらがゼロと等しい

  • 複数ある場合
  • ゼロbより低くランク付けされた場合にソート関数がゼロより

    • 以下を返すべき

      したがって、baは降順で数値を返します。

      John Resigのチュートリアルの次の2ページ(#44と#45)に行くと、makeArray関数(http://ejohn.org/apps/learn/#45)を紹介しています引き数コレクションを配列に変換する問題を解決します。

  • 関連する問題