localeCompare在Safari中无法正常工作

时间:2016-03-10 19:13:51

标签: javascript sorting safari

我使用localeCompare对几列各种字母数字数据进行排序。其中一个列是money和localeCompare - 仅在safari中 - 没有正确排序。这适用于FF,Chrome和IE,但在Safari(因此IOS)中失败

我错过了什么吗?没有错误,只会返回错误的结果。我知道我可以编写一个自定义排序函数来处理它,但我希望有一个更简单的解决方案...

示例小提琴: https://jsfiddle.net/Chenzorama/pLav80Ly/

HTML看起来像这样:

<div class="sortme">
  <div class="somemoney">$10,231,000</div>
  <div class="somemoney">$18,000,000</div>
  <div class="somemoney">$18,500,030</div>
  <div class="somemoney">$8,765,000</div>
  <div class="somemoney">$100,000,000</div>
</div>

和我调用的JS排序函数是:

 var units = $(".sortme .somemoney");
  units.detach().sort(function(a,b) {
    var aa = $(a).text();
    var bb = $(b).text();
    aa=aa.replace(/[,$]+/g, "").trim();
    bb=bb.replace(/[,$]+/g, "").trim();
    var updown = 0;

    if (sortDir == "ab") {
      updown = aa.localeCompare(bb, "en", {numeric: true});
    } else {
      updown = bb.localeCompare(aa, "en", {numeric: true});
    }
    return updown;
  });

  $(".sortme").append(units);

我试图剥离美元符号和逗号,认为那些是罪魁祸首,但似乎并没有解决问题。

1 个答案:

答案 0 :(得分:0)

Safari尚不支持String.prototype.localeCompare()。它仍然在技术预览中。我不知道在下一个OSX和iOS中可能会得到支持。