JavaScript:先按数字然后按字母对数组字符串进行排序

标签 javascript arrays sorting ember.js

我希望对包含电影标题字符串的数组进行排序,例如:

['Battleship','101 Dalmatians','Alice, Sweet Alice','40 Days of Night', '303 Fear Faith Revenge'...]

我的预期输出是:

101 Dalmatians
303 Fear Faith Revenge
40 Days of Night
Alice, Sweet, Alice
Battleship

我正在尝试以下接近的方法:

getMoviesInAlpOrder() {
    const movieList = this.getMovies();
    return movieList.sort(function(a, b) {
        return a.title.toLowerCase() > b.title.toLowerCase();
    });
}

这几乎可以工作,但在对数字与字符标题进行排序时确实存在一些冲突。有关如何最好地处理此类请求的任何建议?

最佳答案

虽然其他答案都是正确的,但我认为下面的解决方案会更灵活一些。

使用 localeCompare应该可以解决您的问题(如果您收到带有重音字符的文本,则可能会解决 future 的问题!)。尤其是电影片名,我希望有一些外国 Angular 色可以排序。

getMoviesInAlpOrder() {
    const movieList = this.getMovies();
    return movieList.sort(function(a, b) {
        var lowerCaseA = a.title.toLocaleLowerCase();
        var lowerCaseB = b.title.toLocaleLowerCase();
        return lowerCaseA.localeCompare(lowerCaseB);
    });
}

关于JavaScript:先按数字然后按字母对数组字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711382/

相关文章:

javascript - AngularJS - 显示 ng-repeat 多数组

java - 最好的比较方法 - 使用排序或添加到集合

c++ - 尝试运行指针排序算法时出现段错误(核心已转储)

javascript - JSnice 如何进行重命名 Javascript 变量的 STATISTICAL RENAMING?

javascript - 验证 HTML 表单中不能同名的多个复选框

javascript - 从不同行和列中的 Javascript 数组和 Bootstrap 生成动态卡片 HTML 卡片

mysql - 重新排序 SELECT LIMIT 查询的输出

javascript - 查找方法(不是 queryBuilder)的嵌套 AND 和 OR 条件

javascript - 如果新的实例对象没有分配给变量会发生什么?

java - 在Java中初始化Map的静态数组