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

trueand だけでなく、1、0、および -1 を返す方が良いです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 に答える