`
ycyk_168
  • 浏览: 100648 次
  • 性别: 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实现中文排序实例

    接下来,我们将介绍如何在JavaScript中结合使用Array.sort()和localeCompare来实现中文排序。Array.sort()方法可以接受一个可选的比较函数作为参数,这个比较函数定义了数组元素如何进行排序。如果不提供比较函数,...

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

    综上所述,使用JavaScript实现中文按照首字母进行排列的关键在于汉字到拼音的转换以及使用自定义的比较函数进行排序。这种方法可以方便地应用于各种场景,比如构建中文名字的通讯录或者实现按首字母筛选的搜索功能。

    js中数组排序sort方法的原理分析.docx

    JavaScript中的数组排序方法`sort()`是一个非常常用的工具,它允许我们轻松地对数组元素进行排序。这个方法在处理数组时,有两种主要的工作模式:默认排序和自定义排序。 默认情况下,`sort()`方法将尝试把所有数组...

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

    在JavaScript中,对中文汉字进行拼音排序是一项常见的需求,特别是在数据处理和用户界面展示时。以下将详细介绍如何使用JS实现中文汉字按拼音排序,并提供相关的操作技巧。 首先,JavaScript提供了`Array.prototype...

    js sort 二维数组排序的用法小结

    JavaScript中的sort方法是用来对数组元素进行排序的内置函数。该函数可以对一维数组进行排序,也可以通过适当定义比较函数来对二维数组进行排序。默认情况下,sort方法会把数组元素转换成字符串,然后根据它们的字符...

    【JavaScript源代码】JavaScript中数组sort()方法的基本使用与踩坑记录.docx

    ### JavaScript中数组sort()方法的基本使用与踩坑记录 #### 一、sort()方法概述 在JavaScript编程中,数组操作非常频繁,其中一种常见的需求就是对数组进行排序。`sort()`方法是JavaScript数组的一个内置方法,它...

    javascript 数组排序函数

    如果提供了这个比较函数,sort方法会根据比较函数返回的值来排序数组中的元素。如果返回值是负数,第一个参数会被排序到第二个参数前面;如果返回值是零,则两个参数相等,排序时它们的位置不变;如果返回值是正数,...

    javascript 表格排序多种数据类型排序(中文混合数字排序).zip

    在JavaScript中,`Array.prototype.sort()`函数是用于对数组进行排序的基础工具,但它默认的排序方式是基于字符串的字典顺序,这并不适合混合数据类型的排序。例如,如果一个数组有字符串和数字,数字会按照它们的...

    js中文排序

    在JavaScript中,中文排序是一个常见的需求,特别是在处理包含中文数据的数组时。`sort()`函数是JavaScript中的一个内置方法,用于对数组进行原地排序。然而,它默认的排序方式是基于Unicode编码,这并不适合中文...

    EasyUI Datagrid 中文排序的问题

    对于中文排序的需求,可以使用 JavaScript 的 `localeCompare` 方法来实现。 2. **实现代码示例**: ```javascript // 定义排序函数 function nameSorter(name_1, name_2) { return name_1.localeCompare(name_...

    JavaScript对象数组的排序处理方法

    在JavaScript中,可以使用sort方法结合localeCompare来实现字符串数组的排序。例如,比较两个字符串对象的属性时,可以使用sort方法的比较函数,比较函数内部调用localeCompare方法来判断两个字符串对象的某个字符串...

    字符串排序方法

    本文介绍了在JavaScript中对字符串数组进行排序的方法,包括基础的`sort()`方法以及更高级的排序算法(如冒泡排序和选择排序)。这些方法可以帮助开发者更好地处理字符串排序问题,提高代码的效率和可读性。根据具体...

    JS实现:数组中的json对象,按某个字段来进行字母排序.pdf

    在JavaScript中,数组排序是一个常见的操作,特别是在处理包含复杂数据结构如JSON对象的数组时。本文将详细讲解如何使用JavaScript实现对数组中的JSON对象按某个字段进行字母排序,并提供一个具体的示例函数。 首先...

    Sorting_arrays_JS:JavaScript中数组排序的不同方法

    本篇文章将深入探讨JavaScript中数组排序的不同方法,包括基本用法、自定义比较函数以及一些高级应用。 一、基本排序 JavaScript的`sort()`方法默认按照字典顺序(Unicode值)对数组元素进行排序。例如,如果你有一...

    javascript字符串排序

    通过学习这份文档,我们可以深入理解自定义排序函数的工作原理,以及如何根据具体需求调整和优化排序逻辑,从而在实际项目中提高性能。 总结来说,JavaScript字符串排序涉及的关键知识点包括: 1. `Array.prototype...

    js中数组排序sort方法的原理分析

    JavaScript中的数组排序方法`sort()`是一个非常常用的功能,它允许我们轻松地对数组元素进行升序或降序排列。在深入理解`sort()`方法的原理之前,先来回顾一下其基本用法。 `sort()`方法接受一个可选的比较函数作为...

    JS中文拼音排序

    在JavaScript中,实现中文拼音排序通常涉及到以下几个步骤: 1. **转换为拼音**:首先,我们需要将中文字符转换为对应的拼音。JavaScript本身并不支持直接获取汉字的拼音,因此通常借助第三方库,如`pinyin`或`zhon...

    原生js table表格自动排序效果

    在JavaScript的世界里,实现表格(table)数据的自动排序是一项常见的需求。这通常涉及到对HTML DOM的操作以及数据处理。在给定的资源中,“原生js table表格自动排序效果”提供了一个无需依赖任何外部库(如jQuery...

    Extjs grid 中文排序问题修正

    在EXTJS开发中,我们经常会遇到使用Grid组件展示数据的情况,特别是当数据包含中文字符时,可能会遇到排序问题。EXTJS Grid默认的排序机制对于英文字符处理得较好,但对于中文字符,由于编码和比较规则的不同,可能...

Global site tag (gtag.js) - Google Analytics