2012-02-16 24 views
4

私はローカルストレージに保存しているオブジェクト内にjavascript配列の配列を設定しています。 {'0':[[score,time],[score,time]}の形式でPhonegapゲームの最高得点です。ここで、0はカテゴリです。私はa[1][0]を使って得点を見ることができます。私はまず高得点でソートしたい。配列の複素数配列を値で並べ替え

var c={'0':[[100,11],[150,12]}; 
c.sort(function(){ 
    x=a[0]; 
    y=b[0]; 
    return y-x; 
} 

ただし、b [0]は常に定義されていないエラーを示します。

私はJavascriptを初めて使っています。これは学習体験としての初めての大きなテストです。私はstackoverflow上の例の数を見てきましたが、まだこの1つを考え出すことはできません。

+0

ここで/ aはどのように定義されていますか? – Jeff

+0

あなたが与えた例は構文的に間違っています:これは大括弧がありません: '{'0':[[score、time]、[score、time]}' –

+0

@Jeff aとbはデフォルトの.sortパラメータです。だから、[0]は配列の最初の項目になるはずですか? – Sketchee

答えて

7

コンパイラ関数にパラメータを宣言する必要があります。

c.sort(function(){ 

c.sort(function(a, b){ 

であるべきで、「私はないですが、」次の状態でそう

var c={'0':[[100,11],[150,12]]}; 
c[0].sort(function(a, b){ 
    var x=a[0]; 
    var y=b[0]; 
    return y-x; 
}); 

c指摘するように、あなたは、アレイ上sortを呼び出す必要があります。

{ 
    "0": [ 
    [150, 12], 
    [100, 11] 
    ] 
} 
+0

+1私はあなたがこれを処理させるよ... :) –

+0

@Mike迅速かつ素晴らしい応答のおかげで!私は数日間ここで、そしてGoogleで例を見ていました...私は関数に '(a、b) 'というパラメータを持たなければならないことに気付きませんでした。ちょうどコードを追加し、私の得点は最終的に正しい順序になっています! – Sketchee

0
function largestOfFour(arr) { 

    for(var x = 0; x < arr.length; x++){ 
     arr[x] = arr[x].sort(function(a,b){ 
      return b - a; 
     }); 
    } 

    return arr; 
} 

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);