3

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

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

4

1 回答 1

5

最好返回 1、0 和 -1 而不是只返回trueand false

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

PS JS 文档中的 sort 函数示例提出了以下方式:

function compareDesc(a, b) {
    return a.value - b.value
}
于 2013-03-21T15:27:24.307 回答