字符串比较之localeCompare

             arr.sort((a,b) => {
              if (a.address === b.address) {
                 return a.schoolName.localeCompare(b.schoolName) 
              } else {
               return a.address.localeCompare(b.address)
               }
             })

stringObject.localeCompare(target)
参数 : target
描述 : 要以本地特定的顺序与 stringObject 进行比较的字符串。
返回值 : 返回数字。如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。
使用的本地规则有汉字和英语的,中用的是英语,则是根据字母排序的。如果有用到汉字则是根据汉字拼音来排序。
a.localCompare(b) – 升序
b.localCompare(a) – 降序

### JavaScript `localeCompare` 方法用于比较中英文字符串 #### 英文字符串排序规则 当使用 `localeCompare` 对两个英文字符串进行比较时,此方法依据字母表顺序返回相应的数值。具体来说: - 如果第一个字符串按字典序位于第二个字符串之前,则返回负数; - 若两字符串相等则返回零; - 当第一个字符串应当排在后面时,则给出正值。 ```javascript const englishWords = ['apple', 'banana', 'orange']; englishWords.sort((a, b) => a.localeCompare(b)); console.log(englishWords); // 输出: ["apple", "banana", "orange"] ``` #### 中文字符串排序规则 针对中文字符而言,`localeCompare` 支持基于拼音首字母来进行排序,并允许指定地区和语言环境(如 `'zh-Hans-CN'`),以便更精确地遵循当地习惯执行排序逻辑[^1]。 ```javascript const chineseNames = ['张三', '李四', '王五']; chineseNames.sort((a, b) => a.localeCompare(b, 'zh-Hans-CN')); console.log(chineseNames); // 输出: ["李四", "王五", "张三"] ``` #### 同时含有英文字母与汉字的情况下的排序行为 如果待排序数组内既包含纯英文也存在带有汉字的项,在调用 `localeCompare` 函数时不特别指明语言标签,默认情况下浏览器会尝试自动检测并处理不同类型的文本混排情况;然而为了获得更加稳定的结果建议显式声明所需的语言设置。 ```javascript const mixedTexts = ['hello', 'world', '你好', '世界']; mixedTexts.sort((a, b) => a.localeCompare(b, undefined)); // 不指定语言让浏览器自行判断 console.log(mixedTexts); // 或者可以分别定义不同的语言选项来控制各自部分的行为 mixedTexts.sort((a, b) => a.localeCompare(b, /[^\u4e00-\u9fff]/.test(a || '') ? '' : 'zh') ); console.log(mixedTexts); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值