2012-04-09 9 views
2

多分、私はJS。例えば、JavaScriptの.sort()でプレイヤー名を並べ替えるためのスコアの多次元配列

var player1 = ["bob", 20]; 
var player2 = ["jon", 40]; 
var player3 = ["tim", 10]; 
var scores = [player1[1], player2[1], player3[1]]; 

scores.sort(sortfunc); 

function sortfunc(a,b){ 
    return a - b; 
} 

alert(scores); 

は明らかにこれは(正確にスコアをソートしますが、私が欲しいのは適切警告にプレイヤー名を注文することです)自分のスコアに基づいて:ここで私が持っているものですティム、ボブ、ジョン。私は必ずしも答えをまっすぐに投稿する人を探しているわけではありませんが、正しい方向に少しヒントはありません!

また、jQueryでこれを行う方が優れていますか(つまり、よりクリーンで簡単です)。特に問題ではないことは分かっていますが、jQueryでどのように見えるか不思議です。

ありがとうございます。

+0

私は明確にしましょう:あなたは、右の名前と一緒に選手を並べ替えたいのですが? –

+0

プレイヤーのソートもうまくいくと思います。私はちょうどそれが達成される方法にかかわらず、第1、第2、第3などにいる人と正しく名前を並べることができるようにしたい。 – daveycroqet

+0

答えを追加しました。あなたの要件に合っているかどうか確認してください:) –

答えて

3

scoresで全体の配列を渡すと、あなたのsortFuncは、最初の要素を抽出します。

http://jsfiddle.net/PS2wS/

var player1 = ["bob", 20]; 
var player2 = ["jon", 40]; 
var player3 = ["tim", 10]; 
var scores = [player1, player2, player3]; 

scores.sort(sortfunc); 

function sortfunc(a,b){ 
    return a[1] - b[1]; 
} 
+0

これは絶対に私が望んでいたものです。私は配列全体を渡してスコアだけでソートすることで、あなたが何をしたのかを見ています。残念ながら、私は完全に配列全体を渡すのがなぜそうするのか理解していないので、多次元配列の把握は難しいと思います。それにかかわらず、それを解決していただきありがとうございます。 – daveycroqet

+0

私はそれが私を許す3分で答えを与えるでしょう。 =) – daveycroqet

+0

@daveycroqet sort()の最初の引数のコールバックは2つのパラメータをとります。これは 'sort()'の配列の最初のレベルメンバです。だから私の答えでは、aとbはplayer1、player2とplayer3になります。私たちは、scoreXであるplayerXの最初の要素の減算を行うことによって順序を返す方法を教えています。 –

関連する問題