技术文章
当前位置:首页 > Javascript技术文章 > 利用JavaScript对中文(汉字)进行排序实例详解

利用JavaScript对中文进行排序的实例代码

  • 发布时间:
  • 作者:码农之家原创
  • 点击:109

这篇文章主要知识点是关于javascript、汉字排序、javascript、中文排序、排序、javascript冒泡排序小结 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

JavaScript和jQuery实战手册
  • 类型:JavaScript大小:103 MB格式:PDF出版:机械工业出版社作者:大卫·索耶·麦克法兰德
立即下载

更多Javascript相关的学习资源可以参阅 Javascript电子书程序设计电子书 等栏目。

利用JavaScript对中文(汉字)进行排序实例详解

前言

在网页上展示列表时经常需要对列表进行排序:按照修改/访问时间排序、按照地区、按照名称排序。

对于中文列表按照名称排序就是按照拼音排序,不能简单通过字符串比较—— ‘a' > ‘b'——这种方式来实现。

比如比较 ‘北京' vs ‘上海',实际是比较 ‘běijīng' vs ‘shànghǎi';比较 ‘北京' vs ‘背景',实际是比较 ‘běijīng' vs ‘bèijǐng'。

一般需要获取到字符串的拼音,再比较各自的拼音。

实现方法

JavaScript 提供本地化文字排序,比如对中文按照拼音排序,不需要程序显示比较字符串拼音。

String.prototype.localeCompare 在不考虑多音字的前提下,基本可以完美实现按照拼音排序。

在没有出现意外的情况下,各个支持 localeCompare 的浏览器都很正常。最近将 Chrome 更新到 58.0.3029.110,突然发现中文排序不正常。

// 正常应该返回 1, 拼音 jia 在前, kai 在后
'开'.localeCompare('驾');
// 得到
-1;
 
// Chrome 58.0.3029.110 下返回 -1, 其他浏览器正常
 
// 确认之后是 localeCompare 需要明确指定 locales 参数
'开'.localeCompare('驾', 'zh');
// 得到
1

利用JavaScript对中文(汉字)进行排序实例详解

在 Chrome 下传递 locales 参数才能获得正常预期结果

利用JavaScript对中文(汉字)进行排序实例详解

Edge 浏览器支持 localeCompare

利用JavaScript对中文(汉字)进行排序实例详解

Firefox 浏览器支持 localeCompare

利用JavaScript对中文(汉字)进行排序实例详解

IE 11 浏览器支持 localeCompare

其他浏览器对 localeCompare 支持也很友好,目前也不需要明确传递 locales,浏览器支持参考 developer.mozilla.org

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持。

javascript冒泡排序小结

冒泡排序示例,双向冒泡排序与对双向冒泡排序稍微的改进的可视化效果。

代码很简单,不知道有木有未知bug。
大神请勿吐槽

冒泡排序示例

var ls=[ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
 
for(var i=0;i<ls.length;i++){
      for(var j=i+1;j<ls.length;j++){
        if(ls[i]>ls[j]){
          ls[i]=ls[i]+ls[j];
          ls[j]=ls[i]-ls[j];
          ls[i]=ls[i]-ls[j];
        } 
      }
    }

双向冒泡排序示例

var ls=[ 6,13,98,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
 
for(var i=0;i<ls.length;i++){
      for(var j=i+1;j<ls.length-i;j++){
        if(ls[lent-1-i]<ls[lent-j]){
          ls[lent-1-i]=ls[lent-1-i]+ls[lent-j];
          ls[lent-j]=ls[lent-1-i]-ls[lent-j];
          ls[lent-1-i]=ls[lent-1-i]-ls[lent-j];
        }//后面的比较
        if(ls[i]>ls[j]){
          ls[i]=ls[i]+ls[j];
          ls[j]=ls[i]-ls[j];
          ls[i]=ls[i]-ls[j];
        }//前面的比较
      }
    }

双向冒泡排序稍微改进示例

var ls=[ 98,13,6,25,38,36,30,44,38,80,61,28,47,34,95,18,85,58,89,85,42,61,74,35,13,14,80,7,10,44,10,47,13,11,52,25,24,48,34,12,88,80,33,8,80,45,64,52,79,77 ];
 
var lent=ls.length;
for(var i=0;i<ls.length;i++){
      for(var j=i*2;j<ls.length-2*i;j++){
        if(ls[i*2]>ls[j+1]){
          ls[i*2]=ls[i*2]+ls[j+1];
          ls[j+1]=ls[i*2]-ls[j+1];
          ls[i*2]=ls[i*2]-ls[j+1];
        }//保持内层第一个数为循环最小
         
        if(ls[lent-i*2-1]<ls[lent-j-1]){
          ls[lent-i*2-1]=ls[lent-i*2-1]+ls[lent-j-1];
          ls[lent-j-1]=ls[lent-i*2-1]-ls[lent-j-1];
          ls[lent-i*2-1]=ls[lent-i*2-1]-ls[lent-j-1];
        }////保持内层倒数第一个数为循环最大
           
          if(ls[lent-2-i*2]<ls[lent-j-1]){
            ls[lent-2-i*2]=ls[lent-2-i*2]+ls[lent-j-1];
            ls[lent-j-1]=ls[lent-2-i*2]-ls[lent-j-1];
            ls[lent-2-i*2]=ls[lent-2-i*2]-ls[lent-j-1];
          }//倒数上一个
           
          if(ls[i*2+1]>ls[j+1]){
            ls[i*2+1]=ls[i*2+1]+ls[j+1];
            ls[j+1]=ls[i*2+1]-ls[j+1];
            ls[i*2+1]=ls[i*2+1]-ls[j+1];
          }//下一个
      }
}

以上就是本次给大家分享的关于Javascript的全部知识点内容总结,大家还可以在下方相关文章里找到js实现方块上下左右移动效、 javascript的写法总结、 webpack 2的react开发配置详解、 等javascript文章进一步学习,感谢大家的阅读和支持。

上一篇:js实现京东轮播图效果的实例代码

下一篇:js的变量提升和函数提升知识点总结

展开 +

收起 -

JS排序 相关电子书
JS排序 学习笔记
网友NO.457954

关于javascript sort()排序你可能忽略的一点理解

前言 在Javascript数组排序中有一个sort()方法,sort()方法可以说分为两种,一种是文字数组排序,一种是数字数组排序。下面这篇文章主要和大家分享了关于最近学习javascript sort()排序发现了一点理解,下面话不多说了,来一起看看详细的介绍吧。 sort()排序的原理 最近在leetcode刷题的时候遇到一个排序问题之前一直都忽略了sort排序的原理,让我们看下w3c对于sort()的说明: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。 要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。 这样就可以解释为什么[0,1,5,10,8]的升序排列会是[0,1,10,5,8]了 sort()排序参数的使用 w3c对于参数的使用还有如下一段说明:如果想按照其他标准进行排序,就需要提供比较函数,……

网友NO.182124

分享javascript实现的冒泡排序代码并优化

冒泡排序:就是将一个数组中的元素按照从大到小或者从小到大的顺序进行排列。 var array=[9,8,7,6,5,4,3,2,1]; 第一轮比较:8,7,6,5,4,3,2,1,9 交换了8次 i=0 j=array.length-1-i 第二轮比较:7,6,5,4,3,2,1,8,9 交换了7次 i=1 j=array.length-1-i 第三轮比较:6,5,4,3,2,1,7,8,9 交换了6次 i=2 j=array.length-1-i 第四轮比较:5,4,3,2,1,6,7,8,9 交换了5次 i=3 j=array.length-1-i 第五轮比较:4,3,2,1,5,6,7,8,9 交换了4次 i=4 j=array.length-1-i 第六轮比较:3,2,1,4,5,6,7,8,9 交换了3次 i=5 j=array.length-1-i 第七轮比较:2,1,3,4,5,6,7,8,9 交换了2次 i=6 j=array.length-1-i 第八轮比较:1,2,3,4,5,6,7,8,9 交换了1次 i=7 j=array.length-1-i 代码实现: var temp;var array=[9,8,7,6,5,4,3,2,1];//外循环控制轮数for(var i=0;iarray.length-1;i++){//内循环控制比较次数 for(var j=0;jarray.length-1-i;j++){ if(array[j]array[j+1]){ //交换两个变量 temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; }……

网友NO.373782

javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】

本文实例讲述了javascript数组常见操作方法。分享给大家供大家参考,具体如下: !DOCTYPE htmlhtml lang="en"head meta charset="UTF-8" titlewww.jb51.net 数组的方法/title script var arr=[1,3,4] var arr1=["a","b","c"] var arr2=["d","e","f"] var arrNum=[] //1、向数组的末尾添加一条或多条元素,并返回新的长度 //arr.push("longzhoufeng") //console.log(arr)//1,3,4,"longzhoufeng" //2、向数组的最开始添加一条或多条元素,并返回新的长度 //arr.unshift("minigui")//IE6,7不支持 //console.log(arr)//"minigui", 1, 3, 4 //3、连接二个数组或者多个数组 //var newArr=arr.concat(arr1,arr2) //console.log(newArr)//[1, 3, 4, "a", "b", "c", "d", "e", "f"] //4、删除并返回数组的第一个元素 //console.log(arr1.shift());//a //arr1.shift(); //console.log(arr1);//b,c //5、删除并返回数组的最后一个元素 //console.log(arr1.pop());//c //arr1.pop() //console.log(arr1)//["a", "b"] //6、删除,替换,添加……

网友NO.158544

基于JavaScript实现的希尔排序算法分析

本文实例讲述了基于JavaScript实现的希尔排序算法。分享给大家供大家参考,具体如下: 通过对直接插入排序的分析,可知其时间复杂度为O(n2),但是,如果待排序序列为正序时,其时间复杂度可提高至O(n)。希尔排序正是对此进行改进的排序。 希尔排序的核心理念与插入排序不同,它会首先比较距离较远的元素,而非相邻元素。通过定义一个间隔序列来表示在排序过程中进行比较的元素之间有多远的间隔 。 下图演示了希尔排序中间隔序列是如何运行的: 下面我们通过js来实现希尔排序,代码如下: !DOCTYPE htmlhtmlheadmeta charset="utf-8"titleJavaScript希尔排序/title/headbodyscript type="text/javascript" function shellSort(nums){//希尔排序 var gaps=[5,3,1];//定义间隔区间 for(var g=0;ggaps.length;g++){//一个一个间隔值开始 for(var i=gaps[g];inums.length;i++){//以间隔值遍历 var temp=nums[i];/……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

电子书资源由网友、会员提供上传,本站记录提供者的基本信息及资源来路

鸣谢: “ 码小辫 ” 公众号提供回调API服务、“ 脚本CDN ”提供网站加速(本站寻求更多赞助支持)

版权投诉 / 书籍推广 / 赞助:520161757@qq.com

上传资源(网友、会员均可提供)

查看最新会员资料及资源信息