我的数组未正确排序。有人可以让我知道我做错了吗?

...
 sortArray = new Array ("hello", "Link to Google", "zFile", "aFile");

//sort array
        if (dir == "asc") {
            sortArray.sort(function(a,b){return a - b});
        } else {
            sortArray.sort(function(a,b){return b - a});
        }

        for(var i=0; i<sortArray.length; i++) {
            console.log(sortArray[i]);
        }

日志将以与输入时相同的顺序显示它们。

最佳答案

您想进行比较而不是减法:

if (dir == "asc") {
    sortArray.sort(function(a, b) {
        a = a.toLowerCase();
        b = b.toLowerCase();
        return a === b ? 0 : a > b : 1 : -1;
    });
} else {
    sortArray.sort(function(a, b) {
        a = a.toLowerCase();
        b = b.toLowerCase();
        return b === a ? 0 : b > a : 1 : -1;
    });
}

我还使用了toLowerCase(),以便正确放置“与Google的链接”。

编辑:更新以根据comment.解决比较问题

See example →

关于javascript排序数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5476736/

10-09 15:07