javascript - 按字母顺序对数组进行排序,将数字和特殊字符保留在末尾

标签 javascript arrays sorting

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

contactList.sort((function(index){
        return function(a, b){
            return (a[index] == b[index] ? 0 : (a[index] < b[index] ? -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));

关于javascript - 按字母顺序对数组进行排序,将数字和特殊字符保留在末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190005/

相关文章:

javascript - 使用 jQuery 根据值对 JSON 数组进行排序

python - 在 drawChessboardCorners 上使用排序函数时出现打印问题

javascript - 如何从使用代码隐藏和 c# 创建的 javascript 调用 session

javascript - 逐个播放 mp3 文件列表

javascript - FileReader 和 $scope.$watch 的 AngularJS 问题?

php - 将 PHP 数组值与字符串的一部分进行比较

c++ - 检查数组元素是否为空

javascript - React.js 中的相对导入

arrays - Julia 中用户定义的类型用于 "marking"目的

c# - 向快速排序算法添加计数器以显示交换操作的总数