0

我正在使用这个按字母顺序对数组进行排序:

contactList.sort((function(index){
        return function(a, b){
            return (a[index] == b[index] ? 0 : (a[index] < b[index] ? -1 : 1));
        };
    })(2));

它很好用,唯一的问题是数字和特殊字符出现在我的数组顶部。我希望它按字母顺序排序,但我也希望它在最后存储数字和特殊字符。

我真的不知道如何修改我的功能才能做到这一点。

4

1 回答 1

2

只需检查它们是否是字母。我只检查第一个字符,但也许你需要扩展这个检查 a[index].charAt(0) == b[index].charAt(0)以比较后面的字母等等循环。

contactList.sort((function(index){
    return function(a, b){
        var aIsLetter = a[index].charAt(0).match(/[a-z]/i),
            bIsLetter = b[index].charAt(0).match(/[a-z]/i);
        if (aIsLetter && !bIsLetter) return -1;
        if (!aIsLetter && bIsLetter) return 1;
        return (a[index] == b[index] ? 0 : (a[index] < b[index] ? -1 : 1));
    };
})(2));
于 2013-04-24T10:53:23.767 回答