通过自定义函数IE js排序数组不起作用

时间:2013-03-21 15:22:00

标签: javascript internet-explorer

我在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

因此排序不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

最好返回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

P.S。 JS文档中的sort函数示例提出了以下方法:

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