无法对数组进行排序
Posted
技术标签:
【中文标题】无法对数组进行排序【英文标题】:Unable to do sort on arrays 【发布时间】:2019-04-20 01:37:50 【问题描述】:我正在尝试按文本对 jquery 对象数组进行排序。
var $divs = $("#"+menu +"> div");
var numOrderedDivs = $divs.sort(function (a, b)
return $(a).text() > $(b).text();
);
$("#"+menu).html(numOrderedDivs);
但是我没有看到任何变化
【问题讨论】:
那么 text() 返回的是什么?一小部分 HTML 样本将在很大程度上帮助我们为您提供帮助 【参考方案1】:尝试在您的排序中使用String.localeCompare:
var $divs = $("#"+menu +"> div");
var numOrderedDivs = $divs.sort(function (a, b)
return $(a).text().localeComrate($(b).text());
);
$("#"+menu).html(numOrderedDivs);
它:
... 返回一个数字,指示引用字符串是在之前还是 在或之后的排序顺序与给定字符串相同
它还支持各种options进行比较,非常方便。
Array.sort
还可以与比较器函数一起使用,根据文档,该函数的返回值应该是一个整数:
function compare(a, b)
if (a is less than b by some ordering criterion)
return -1;
if (a is greater than b by the ordering criterion)
return 1;
// a must be equal to b
return 0;
而不是像你这里的布尔值:return $(a).text() > $(b).text();
localeCompare
在使用时会为您执行此操作。
【讨论】:
【参考方案2】:试试这个“.localeCompare”来排序字符串
var numOrderedDivs = $divs.sort(function (a, b)
return $(a).text().localeCompare($(b).text()) // for sorting in increasing order
);
【讨论】:
以上是关于无法对数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章