汉字数组排序及如何检测汉字

起因

        最近接触了一道有意思的题目,就是单击表格的表头,根据表头的那一栏进行排序。恰好有一栏的数据全部是中文汉字,如果仅仅对于汉字数组使用默认的sort排序,那么是针对汉字的unicode值进行比较排序,结果肯定与我们习惯的根据汉字的拼音排序大不相同。但是对于一个简单易用的程序而言,没有必要写个复杂的算法来将汉字转化为拼音,然后在进行ascII码值比较,代价有些大,幸好,js中有一个函数可以基本解决我们的问题,那就是localCompare函数。

localCompare()

        localCompare函数在W3C规范上是这样定义的:

用本地特定的顺序来比较两个字符串。localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。

可以这样使用:

        str.localCompare(s);

返回-1,则str<s;返回0,则str==s;返回1,则str>s。

这样,针对汉字数组,我们就很容易来实现本地化比较。

       Chs.sort(function(a,b){
                    return a.localeCompare(b);
                });

监测汉字

由于汉字在当前的系统中都是unicode编码,因此可以使用unicode码值来判断是否是汉字。汉字在unicode的范围是\u4E00-\u9FFF,因此可以使用正则来判断。

function CheckChinese(obj,val){     
  var reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
  if(reg.test(val))
    return true;
        else
    return false;
  }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ytkah

JS页面跳转代码怎么写?总结了5种方法

  我们在建站时有些链接是固定的,比如客服咨询链接,一般是第三方url,如果直接加上去不太专业,那么就想着用站内的页面做跳转,跳转用js比较多,那么JS页面跳转...

94460
来自专栏hbbliyong

Javascript构造函数

     构造函数注意事项: 1.默认函数首字母大写 2.构造函数并没有显示返回任何东西。new 操作符会自动创建给定的类型并返回他们,当调用构造函数时,new...

369110
来自专栏hbbliyong

突然顿悟的Javascript中的this

  一直对Javascript中的this都有一种似是而非的感觉,今天突然感觉豁然开朗,特此记录一下。 咱们先看个栗子: <!DOCTYPE html> <ht...

36480
来自专栏hbbliyong

highcharts 时间少8小时问题

Highcharts 中默认开启了UTC(世界标准时间),由于中国所在时区为+8,所以经过 Highcharts 的处理后会减去8个小时。 如果不想使用 UTC...

35560
来自专栏hbbliyong

2017 年不可错过的开发工具 Top 50

想知道 2017 年有哪些值得关注的开发工具吗?StackShare 年度开发工具排行榜来啦! StackShare.io 是一个开发者工具及服务分享平台,致力...

532110
来自专栏hbbliyong

图片上传预览js

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t...

48790
来自专栏hbbliyong

你不可错过的二维码生成与解析-java后台与前端js都有

1.二维码分类   二维条码也有许多不同的码制,就码制的编码原理而言,通常分为三种类型。 线性堆叠式二维码 编码原理: 建立在一维条码基础之上,按需要堆积成...

71580
来自专栏hbbliyong

12个非常有用的JavaScript技巧

在这篇文章中,我将分享12个非常有用的JavaScript技巧。这些技巧可以帮助你减少并优化代码。  1) 使用!!将变量转换成布尔类型 有时,我们需要检查...

27770
来自专栏ytkah

两个js冲突怎么解决?试试这四个方法

  两个js冲突很让前端头疼,虽然jquery是通用的,但调用不同经常会出问题。jQuery是目前流行的JS封装包,简化了很多复杂的JS程序,JQuery讲浏览...

79870
来自专栏hbbliyong

更快学习 JavaScript 的 6 个思维技巧

我们在学习JavaScript,或其他任何编码技能的时候,往往是因为这些拦路虎而裹足不前: 有些概念可能会造成混淆,尤其当你是从其他语言转过来的时候。 找不到时...

29570

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励