我有一个 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"
项之间。所以它看起来像这样:
我知道字符串按字母顺序排序,但是 "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/