我有这个排序功能,但我用它来排序一个表,我可以按日期排序(为简单起见我已删除)和字符串,但是整数表现得很奇怪,一个常见的情况是所有值都可以是0 ,这将给出数组
[0,0,0,0]
这在firefox中完美运行但不在chrome中,它改变了我的表中行的顺序,尽管它们是相同的,我甚至遵循ECMA标准。为什么chrome会改变订单呢?我也尝试过使用
return (ascending_order ? a - b : b - a)
但与我使用不同数据类型的更一般方法的结果相同
arr.sort(function(a, b){
var onlydigitsRegex = new RegExp("\d+","g");
if (a.match(onlydigitsRegex) && b.match(onlydigitsRegex)) {
a = parseInt(a);
b = parseInt(b);
} else {
a = a.toLowerCase();
b = b.toLowerCase();
}
return (a === b) ? 0 : (ascending_order ? ((a > b) ? 1 : -1) : ((a < b)? 1 : -1));
});