2012-02-03 9 views
0

私はこのオブジェクトをscoreの値でソートしようとしていますので、ハイスコアテーブルに値を設定できます。このソート方法は、式の中で-を使って最小値から最大値までソートするのに素敵ですが、+で逆にしようとするとうまくいきません。私は混乱しています。..このオブジェクト配列のソートに失敗したのはなぜですか?

JS:

scores = [ 
     {"n":"Arne", "score":700}, 
     {"n":"Bertil", "score":430}, 
     {"n":"Carl", "score":901}, 
     {"n":"David", "score":30}, 
     {"n":"Eric", "score":23}, 
     {"n":"Frida", "score":118}, 
     {"n":"Greg", "score":221}, 
     {"n":"Hulk", "score":543} 
     ]; 

scores.sort(function(a, b) { 
return a.score + b.score; 
}); 

//add rows to table from scores object 
var t = document.getElementById('table'); 
for (var j in scores) { 

     var r = document.createElement('tr') 
     r.innerHTML = '<td><span></span></td><td>'+scores[j].n+'</td><td>'+scores[j].s+'</td>' 
     t.appendChild(r); 
} 

答えて

3

あなたは、最初に減算を含むソートを元に戻そうとしていると言います。

したがって、私はあなたが反対方向にソートしたい場合は、単に減算の順序を逆に

scores.sort(function(a, b) { 
    return a.score - b.score; 
}); 

...それはあなたの元の並べ替えは、このようなものだったと仮定することが公正だと思う:

scores.sort(function(a, b) { 
    return b.score - a.score; 
}); 
+0

ビンゴ! w3schoolsを参照するために – jenswirf

0

あなたのソート機能は、あなたはおそらく間違いですが、いくつかの数字を追加しようとpositive , 0 , or negative values

を返す必要があります。

はここにしてみてください:それはスコアによってソート

http://jsbin.com/icojaz/edit#javascript,html

+0

技術的には、コンパレータの結果は未定義のソート順になります(15.4.4.11の仕様を参照)、関数はその整合性要件の半分を破棄します。 – davin

-1

http://www.w3schools.com/jsref/jsref_sort.aspによれば、入力パラメータを次のように逆転させるだけです。return a.score -b.score;

+0

-1ありがとうございます。 http://w3fools.com/ :-) –

+0

に感謝してください。 –

関連する問題