我使用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);
我试图剥离美元符号和逗号,认为那些是罪魁祸首,但似乎并没有解决问题。
答案 0 :(得分:0)
Safari尚不支持String.prototype.localeCompare()
。它仍然在技术预览中。我不知道在下一个OSX和iOS中可能会得到支持。