stringObject.localeCompare(target)小坑

今天测试测出一个BUG,看了下遗留代码,在做sort排序时,用了localeCompare进行字符串比较。

//在Ios和chrome下返回-1,说明HangJinLu比HanZhongLu小,
//在安卓下面返回了13,说明HangJinLu比HanZhongLu大
'HangJinLu'.localeCompare('HanZhongLu')

//返回true
'HangJinLu'>'HanZhongLu'

看了下该方法说明:

referenceStr.localeCompare(compareString[, locales[, options]])

把 < 和 > 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。以这种方法生成的顺序不一定是正确的。例如,在西班牙语中,其中字符 “ch” 通常作为出现在字母 “c” 和 “d” 之间的字符来排序。
localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。

ref:
mdn
w3school

你可能感兴趣的:(stringObject.localeCompare(target)小坑)