`
ycyk_168
  • 浏览: 97262 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

JavaScript学习笔记(3)数组排序以及在汉字排序中localeCompare()方法的使用

阅读更多

  说到表格排序,首先要说的就一定是数组的排序,因为数组排序是表格排序的基础。JavaScript为数组提供了sort()方法用于表格排序,默认情况下该方法会使Array中的数组按照ASCII码的顺序进行排列,JavaScript还为数组提供了数组倒序的方法reverse()。
  看一下示例:

1         function sortArray(){
2             var arrayTest = ["z",5,2,"a",32,3];
3             arrayTest.sort();
4             alert(arrayTest.toString());     //output:2,3,32,5,a,z
5             arrayTest.reverse();
6             alert(arrayTest.toString());    //output:z,a,5,32,3,2
7         }
8         sortArray();

  呵呵,5比32还要大,很明显这不是我们想要的结果,刚才已经说过sort()方法是按照ASCII码的顺序排序的。其实sort()方法还允许带一个函数类型的的参数,我们可以称之为比较函数,当该比较函数又可以接收两个参数,以下该函数返回值的意义:
  -1:第一个参数 小于 第二个参数
   0:第一个参数 等于 第二个参数
   1:第一个参数 大于 第二个参数
看一个例子:

 1         /**
 2          * 比较函数
 3          * @param {Object} param1 要比较的参数1
 4          * @param {Object} param2 要比较的参数2
 5          * @return {Number} 如果param1 > param2 返回 1
 6          *                     如果param1 == param2 返回 0
 7          *                     如果param1 < param2 返回 -1
 8          */
 9         function compareFunc(param1,param2){
10             //如果两个参数均为字符串类型
11             if(typeof param1 == "string" && typeof param2 == "string"){
12                 return param1.localeCompare(param2);
13             }
14             //如果参数1为数字,参数2为字符串
15             if(typeof param1 == "number" && typeof param2 == "string"){
16                 return -1;
17             }
18             //如果参数1为字符串,参数2为数字
19             if(typeof param1 == "string" && typeof param2 == "number"){
20                 return 1;
21             }
22             //如果两个参数均为数字
23             if(typeof param1 == "number" && typeof param2 == "number"){
24                 if(param1 > param2) return 1;
25                 if(param1 == param2) return 0;
26                 if(param1 < param2) return -1;
27             }
28         }

   当我们执行arrayTest.sort(compareFunc)时我们就得到了正确的结果。
到这里,我们不得不说明一下localeCompare()方法的用法,该方法是对字符串进行排序的方法,只有一个参数即要比较的字符串。具体说明如下:
   1、如果String对象按照字母顺序排在参数中的字符串之前,返回负数
   2、如果String对象按照字符顺序排在参数中的字符串之后,返回正数
   3、如果String对象等于参数中的字符串返回0
   除此之外,localeCompare()方法还有一个独特之处,这个独特之处可以在其方法签名locale(现场、当地)上得以体现,也就是说他的实现时按照区域特性来的,如果在英语体系中,他的实现可能是按照字符串升序,如果在汉语中,他的实现则是按照首字母的拼音。呵呵,这也就是说就算我们在程序中涉及汉字,我们的排序也不回出错。
   参考以下程序:

1         var testArray = ["","","","","","","","","","","","","","" ];
2         document.write(testArray.sort(
3             function compareFunction(param1,param2){
4                 return param1.localeCompare(param2);  //output:份,公,股,技,术,司,息,限,信,信,有,源,郑,州 
5             }
6         ));
分享到:
评论

相关推荐

    JS中使用sort结合localeCompare实现中文排序实例

    主要介绍了JS中使用sort结合localeCompare实现中文排序实例,重点介绍localeCompare函数,需要的朋友可以参考下

    js实现中文按照首字母进行排列

    js实现中文按照首字母进行排列,可以按照首字母进行分类、排序。js实现中文按照首字母进行排列,可以按照首字母进行分类、排序。

    JavaScript中操作字符串之localeCompare()方法的使用

    这个方法返回一个数字表示参考字符串是否到来之前或之后或相同的排序顺序给定的字符串。 语法 string.localeCompare( param ) 下面是参数的详细信息: param : 字符串对象进行比较的字符串 返回值: 0 : 字符串...

    JavaScript实现拼音排序的方法

    一般情况下,大家会使用下面的方法来进行汉字的拼音排序 代码如下: var list = [ ‘王’, ‘张’,’李’]; list.sort(function (a, b) { return a.localeCompare(b); }); localeCompare() :用本地特定的顺序来比较...

    javascript对中文按照拼音排序代码

    今天在代码中用到了对中文按照拼音排序,咨询了群里面的大神后得到了下面的代码: var arr = ["张三","李四","王五","阿三"]; [removed](arr+" "); arr.sort(function(a,b){ return a.localeCompare(b); }); ...

    JS实现中文汉字按拼音排序的方法

    本文实例讲述了JS实现中文汉字按拼音排序的方法。分享给大家供大家参考,具体如下: 代码1,拼音排序: var array = ['武汉', '北京', '上海', '天津']; var resultArray = array.sort( function compareFunction...

    微软JavaScript手册

    join 方法 返回一个由数组中的所有元素连接在一起的 String 对象。 Labeled 语句 给语句提供一个标识符。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String ...

    javascript文档

    join 方法 返回一个由数组中的所有元素连接在一起的 String 对象。 Labeled 语句 给语句提供一个标识符。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String ...

    JavaScript Sort 表格排序

    你知道JavaScript中 localeCompare 方法的函数体吗? 3.表格排序 方法 要哪些参数? JavaScript中的sort方法直接就提供了排序的功能,不需要我们自己写个循环一个个的判断。但其机制仍然是那样的, 代码如下: ...

    小程序中英文混合排序问题解决

    小程序中英文混合排序问题 在开发一个手机联系人列表的功能时,遇到需求是需要将联系人列表按照拼音顺序排序。而联系人列表是会出现中英文混合的情况。于是遇到了问题。 小程序无法直接中文进行排序 localeCompare...

    JavaScript高级程序设计学习笔记(四)

    文章目录第五章(下)引用类型Function 类型函数声明和定义没有重载函数声明与函数表达式作为值的函数函数内部属性函数属性和方法call()和apply()...方法字符串大小写转换方法字符串的模式匹配方法localeCompare()方法f

    JScript 语言参考

    join 方法 返回一个由数组中的所有元素连接在一起的 String 对象。 Labeled 语句 给语句提供一个标识符。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String ...

    javaScript对文字按照拼音排序实现代码

    JavaScript对文字按照拼音排序&lt;/title&gt;[removed]function defaultSort(){var a=”zhongguo,daguo,世界,中国,超级大国”;a=a.split(“,”);a.sort();alert&#40;a&#41;;}function cusSort(){var a=”zhongguo,...

    javascript语言参考+教程 CHM

    在浏览器中显示信息; 使用消息框; 语言参考; 特性信息; Microsoft JScript 特性 - ECMA; Microsoft JScript 特性 - 非-ECMA; JScript 字母顺序的关健字列表; JScript 错误; JScript 运行时错误; JScript ...

    JavaScript 给汉字排序实例代码

    比如 var arr = [“中”,”华”,”人”,”民”,”共”,”和”,”国”],在执行 sort 方法后结果为 :中,人,共,华,和,国,民,既不是拼音也不是笔划数量的排序。 以前很少留意过 localeCompare 方法,手册中...

    tablesorter.js表格排序使用方法(支持中文排序)

    1. 首先,可从官网下载tablesorter.js,但并不支持中文的排序,对其源码进行修改: 部分源码: function sortText(a, b) { return ((a &lt; b&gt; b) ? 1 : 0)); }; function sortTextDesc(a, b) { return ((b &lt; a&gt; a) ...

    js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME

    套排序机制同时兼容了IE和ff 可以实现所有浏览器下排序的统一哦

Global site tag (gtag.js) - Google Analytics