2013-03-21 23 views
2

我在JS简单的自定义排序功能:IE JS通过自定义函数排序数组不起作用

function compareDesc(a, b) { 
    return a.value < b.value; 
} 

我再试图理清字典的数组:

var test = []; 
test.push({value: 0, foo: "bar"}); 
test.push({value: 250, foo: "bar"}); 
test.push({value: 3, foo: "bar"}); 
test.sort(compareDesc); 
alert(test[0].value); 
alert(test[1].value); 
alert(test[2].value); 

它的工作原理在Chrome和Firefox在那里我得到:

250 
3 
0 

但在所有版本的IE,我得到:

0 
250 
3 

所以排序不起作用。任何想法为什么?

回答

3

这是更好地返回1,0,-1,而不是仅仅truefalse

function compareDesc(a, b) { 
    if (a.value < b.value){ 
     return 1; 
    } 
    else if(a.value > b.value) 
    { 
     return -1; 
    } 
    return 0; 
} 

下面是一个例子: http://jsfiddle.net/2wwBF/2

附: JS文档中的排序函数示例提供以下方法:

function compareDesc(a, b) { 
    return a.value - b.value 
} 
+0

谢谢。这解决了这个问题;) – 2013-03-21 15:34:49