2012-02-16 110 views
4

我有一个数组在javascript中的数组设置在一个对象,我存储本地存储。这是Phonegap游戏的高分,格式为{'0':[[score,time],[score,time]},其中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的例子,但还是无法想象这一点。

+0

在哪里/如何定义“a”和“b”? – Jeff 2012-02-16 17:40:12

+0

您给出的例子在语法上不正确:缺少一个方括号:'{'0':[[score,time],[score,time]}' – 2012-02-16 17:40:46

+0

@Jeff a和b是默认的.sort参数。所以[0]应该是数组中的第一项? – Sketchee 2012-02-16 18:01:04

回答

7

您需要将参数声明为比较函数。

c.sort(function(){ 

应该

c.sort(function(a, b){ 

,你需要调用sort阵列上的 “我不是我在” 指出这样

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在以下状态:

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

+1我会让你处理这个...... :) – 2012-02-16 17:51:15

+0

@Mike感谢您的快速和真棒的回应!我一直在这里和谷歌上查看几天的例子......我没有意识到我必须在函数中使用参数'(a,b)'。只是添加了代码,我的分数最终以正确的顺序! – Sketchee 2012-02-16 18:07:02

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]]);