javascript - localeCompare() 在移动浏览器上的奇怪行为

标签 javascript string cross-browser mobile-browser

localeCompare() 应该返回(-1、0 或 1),但是,以下代码在我的 PC 浏览器 Chrome 53 上返回“1”(如预期),但在我的手机浏览器上返回“-8” Samsung Internet for Android 4.0,这应该是一个现代浏览器!

var b = "aZ";
var a= "ab"
var res = b.localeCompare(a);
document.getElementById('alert').innerHTML =res;
<label id="alert">Ret</label>

还有 fiddle : https://jsfiddle.net/4a3rwem1/5/

有什么替代的(也许更全面的)解决方案来比较 JS 中的字符串吗?

最佳答案

您可以使用更小或更大的符号来比较字符串,例如 MDN建议

+(a > b) || +(a === b) - 1

var a = "ab",
    b = "aZ",
    aa = a.toLowerCase(),
    bb = b.toLowerCase(),
    res = +(a > b) || +(a === b) - 1;

console.log(res);

关于javascript - localeCompare() 在移动浏览器上的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40074158/

相关文章:

java - 图书馆计划 - 分配和借阅书籍

javascript - Axios 配置未在我的响应中显示 OnUploadProgress

javascript - 在页面上引导多个 Angular 应用程序会导致 Controller 未定义的错误

java - 我应该为每隔一条线使用什么分离器?

java - 在 Android 中保存 ArrayList 的最简单方法是什么?

css - 我的横幅在 Safari 5.1.7 中不可见

javascript - Django 客户端过滤

javascript - 在 Laravel 中使用 id 和标签提前输入

css - IE 11 中父子之间的幽灵边距/填充

javascript - 流程图渲染错误