Javascript sort()的字母排序不正确

Javascript sort()的字母排序不正确,javascript,jquery,sorting,Javascript,Jquery,Sorting,我可以看出我在数组中得到了所需的值,但是在sort()运行之后,数组顺序会改变,但不会按字母顺序。我有一些像英语,ATL,NAS,CLT,BIM 有什么想法吗?您正在排序jQuery包装的HTML元素,而不是字符串。谁知道哪一个按排序顺序排在另一个之前?您需要使用.val()而不是元素本身对它们的值进行排序 var ccArray = []; ccArray = $("input:checkbox[name='multiselect_ddlCC']").sort(); 您必须对DOM元素进行排

我可以看出我在数组中得到了所需的值,但是在sort()运行之后,数组顺序会改变,但不会按字母顺序。我有一些像英语,ATL,NAS,CLT,BIM


有什么想法吗?

您正在排序jQuery包装的HTML元素,而不是字符串。谁知道哪一个按排序顺序排在另一个之前?

您需要使用.val()而不是元素本身对它们的值进行排序

var ccArray = [];
ccArray = $("input:checkbox[name='multiselect_ddlCC']").sort();

您必须对DOM元素进行排序并重新附加它们

var ccArray = [];
ccArray = $("input:checkbox[name='multiselect_ddlCC']").val().sort();
编辑:刚刚测试了
replacetwith
,但它不起作用,我的坏消息。这很好:

var $els = $("input:checkbox[name='multiselect_ddlCC']");

var $sorted = $($els.toArray().sort(function(a, b) {
  return a.value > b.value;
}));

$els.replaceWith($sorted);

演示:

您必须实际比较输入值,因为它们是字符串,您必须使用
,因为减法无法正常工作:

$els.each(function(i) {
  $(this).after($sorted.eq(i));
});
.sort(函数(a、b){
如果($(a).val()<$(b).val()){
返回-1;
}
否则{
返回1;
}
});

如果您只想获得所选复选框值的排序列表:

.sort(function (a, b) {
    if ($(a).val() < $(b).val()) {
       return -1;
    }
    else {
       return 1;
    }
});

应该有效的方法是:

var values = [];
$('input:checkbox[name='multiselect_ddlCC']:checked').each(function(i,e){
  values.push(e.value);
});
var sortedValues = values.sort();

您希望对DOM元素或复选框值进行排序吗?你现在做的是前者,你没有把事情分类正确。您正在对元素进行排序。(对于有关HTML/CSS/JS的问题,您应该给出一个例子,它更容易帮助您:)我明白了,我认为没有方法选择值?.val()没有给出每个元素的值的数组。它只给出第一个的值。
jQuery.map(ccArray, function(item) { return item.value }).sort()