美文网首页
stringObject.localeCompare(targe

stringObject.localeCompare(targe

作者: real勾玉 | 来源:发表于2016-09-09 21:03 被阅读44次

    今天测试测出一个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(targe

          本文链接:https://www.haomeiwen.com/subject/iffyettx.html