javascript - JavaScript 中数组排序不正确

标签 javascript arrays sorting

我有一个 Javascript 字符串数组,正在使用 compareFunction 对其进行排序。在大多数情况下,它的排序是正确的:

JS

array = ["E10N1", "E10N3", "E10N10", "E10N2", "E10N4", "E10N9", "E10N5", "E10N8", "E10N6", "E10N7"];

function sortStrings(a, b){
    if(a < b){
        return -1;
    }
    if(a > b){
        return 1;
    }
    return 0;
}

array.sort(sortStrings);
for(var i = 0; i < array.length; i++){
    $(".table_body").append("<div class='table_row'><p>" +array[i] +"</p></div>");
}

我遇到的问题是排序函数将 "E10N10" 项放在 "E10N1""E10N2" 项之间。所以它看起来像这样:

enter image description here

我知道字符串按字母顺序排序,但是 "E10N10" 字符串是否仍会晚于 "E10N9" 进行处理?如何修复它以使该特定字符串在排序后出现在数组的最后?

最佳答案

您可以修改自定义排序函数来处理此问题。例如,如果所有字符串都以排序时不关心的 4 个字符开头,则只需执行以下操作:

function sortStrings(a, b){

    a = parseInt(a.substr(4));
    b = parseInt(b.substr(4));

    if(a < b){
        return -1;
    }
    if(a > b){
        return 1;
    }
    return 0;
}

关于javascript - JavaScript 中数组排序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33877253/

相关文章:

javascript - 当父级来自不同域时,在另一个 iframe 中执行 javascript 函数

php - 每个员工所做的事件摘要

c++ - 在 C++ 中追加到 Char 数组的末尾

javascript - 注意动态添加的类

javascript - Javascript 中对象声明中的函数语句

javascript - 文本字段要大写,但是句子大小写占位符?

c - K&R C 练习 3-3 编辑数组中的 char 元素不起作用?

sorting - OCaml 中的尾递归合并排序

ruby - 按日期字段对哈希数组进行排序

java - 如何对使用 Guava Range 值作为键的集合进行排序?