【问题标题】: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 样本将在很大程度上帮助我们为您提供帮助

标签: javascript jquery arrays sorting


【解决方案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
    });
    

    【讨论】:

      猜你喜欢
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多