说到表格排序,首先要说的就一定是数组的排序,因为数组排序是表格排序的基础。

JavaScript为数组提供了sort()方法用于表格排序,默认情况下该方法会使Array中的数组按照ASCII码的顺序进行排列,JavaScript还为数组提供了数组倒序的方法reverse()。

看一下示例:

function sortArray(){

var arrayTest = ["z",5,2,"a",32,3];

arrayTest.sort();

alert(arrayTest.toString()); //output:2,3,32,5,a,z

arrayTest.reverse();

alert(arrayTest.toString()); //output:z,a,5,32,3,2

}

sortArray();

呵呵,5比32还要大,很明显这不是我们想要的结果,刚才已经说过sort()方法是按照ASCII码的顺序排序的。

其实sort()方法还允许带一个函数类型的的参数,我们可以称之为比较函数,当该比较函数又可以接收两个参数,以下该函数返回值的意义:

-1:第一个参数 小于 第二个参数

0:第一个参数 等于 第二个参数

1:第一个参数 大于 第二个参数

/**

* 比较函数

* @param {Object} param1 要比较的参数1

* @param {Object} param2 要比较的参数2

* @return {Number} 如果param1 > param2 返回 1

* 如果param1 == param2 返回 0

* 如果param1 < param2 返回 -1

*/

function compareFunc(param1,param2){

//如果两个参数均为字符串类型

if(typeof param1 == "string" && typeof param2 == "string"){

return param1.localeCompare(param2);

}

//如果参数1为数字,参数2为字符串

if(typeof param1 == "number" && typeof param2 == "string"){

return -1;

}

//如果参数1为字符串,参数2为数字

if(typeof param1 == "string" && typeof param2 == "number"){

return 1;

}

//如果两个参数均为数字

if(typeof param1 == "number" && typeof param2 == "number"){

if(param1 > param2) return 1;

if(param1 == param2) return 0;

if(param1 < param2) return -1;

}

}

当我们执行arrayTest.sort(compareFunc)时我们就得到了正确的结果。

到这里,我们不得不说明一下localeCompare()方法的用法,该方法是对字符串进行排序的方法,只有一个参数即要比较的字符串。

具体说明如下:

1、如果String对象按照字母顺序排在参数中的字符串之前,返回负数

2、如果String对象按照字符顺序排在参数中的字符串之后,返回正数

3、如果String对象等于参数中的字符串返回0

除此之外,localeCompare()方法还有一个独特之处,这个独特之处可以在其方法签名locale(现场、当地)上得以体现,也就是说他的实现时按照区域特性来的,如果在英语体系中,他的实现可能是按照字符串升序,如果在汉语中,他的实现则是按照首字母的拼音。

呵呵,这也就是说就算我们在程序中涉及汉字,我们的排序也不回出错。

参考以下程序:

var testArray = ["脚","本","之","家"];

document.write(testArray.sort(

function compareFunction(param1,param2){

return param1.localeCompare(param2); //output:之,家,本,脚

}

));

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php localcompare,JS中使用sort结合localeCompare实现中文排序实例_javascript技巧相关推荐

  1. php js实现流程图,详解js中构造流程图的核心技术JsPlumb(2)_javascript技巧

    前言:上篇详解js中构造流程图的核心技术JsPlumb介绍了下JsPlumb在浏览器里面画流程图的效果展示,以及简单的JsPlumb代码示例.这篇还是接着来看看各个效果的代码说明. 一.设置连线的样式 ...

  2. Js中的Sort排序方式

    Js中的Sort排序方式 这里只列出部分排序方式 1.Sort排序 Sort排序是数组内置函数,但他的排序是根据系统字符默认排序 //数组const arr = [3,4,2,3,123,35,65, ...

  3. 前端开发必备:js中的sort()排序函数

    碎片时间学习一下这个短短的案例技巧,将来开发中肯定会用得上的. javascript中的sort()的用法也有很多种,搜索一下就有很多了,而且都不会有什么问题.但是一下这样写法更简洁易看. <s ...

  4. js中当等于最小值是让代码不执行_JavaScript中最最基础的知识点

    JavaScript 中有很多很常用的也很基础的知识点需要我们牢牢记住,倒背如流,这样在开发的时候才能得心应手. 本文主要总结了DOM,Array,String,Math的一些常用方法,还有一些JS编 ...

  5. Java中使用sort()进行升序降序排序

    这篇文章主要介绍了详解Java sort()数组排序(升序和降序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 我们在学习 J ...

  6. vue,js中json对象数组按对象属性排序(sort方法)根据英文首字母进行排序

    for (let i = 0; i < this.tableData.length; i++) {const itemList = this.tableData[i] as any;const ...

  7. java集合中中文排序_利用Collator和Collections.sort对list进行中文排序,注意与Arrays.sort的区别...

    //两者的关系:1.Coollections.sort的内部实现是用Arrays.sort来实现的. //2.如果要排序的list中的对象已经实现了Comparable接口,那么可以用Arrays.s ...

  8. html 判断字符串相等,js中怎么判断两个字符串相等的实例

    在javascript判断两个变量值是否相等,可以使用 ==(等同)操作符 或者 ===(恒等)操作符 == 操作符 "等同"操作符,简单判断2个变量值是否相等,变量类型不一致时, ...

  9. php动态加载js,动态加载script文件的两种方法_javascript技巧

    动态加载script到页面大约有俩方法 第一种就是利用ajax方式,把script文件代码从后台加载到前台,然后对加载到的内容通过eval()执行代码.第二种是,动态创建一个script标签,设置其s ...

最新文章

  1. 14,matlab中如何查看程序中所调用的函数
  2. pyqt5实战开发主窗口加布局
  3. 多线程之旅之四——浅谈内存模型和用户态同步机制
  4. 2020牛客国庆集训派对day2 VIRUS OUTBREAK
  5. 交叉表组件(改造 适用多个子标题)
  6. 初步创建vue/cli工程教程
  7. 安卓团课快进_青年大学习网上主题团课第十季第七期答案
  8. strassen矩阵乘法 java_Strassen 矩阵算法 Java 实现
  9. Python实现一键打开/关闭防火墙
  10. AutoRunner自动化测试工具下载地址及安装步骤-泽众云测试
  11. matlab小波变换函数总结,matlab小波变换函数的总结与程序
  12. xman_2019_format(非栈上格式化字符串仅一次利用的爆破)
  13. 基于STM32的ESP8266获取心知天气数据
  14. 【java图形化用户界面】猜数游戏
  15. 折弯机使用说明书_折弯机使用操作方法-几大要点
  16. Android R系统aidl文件怎么对应的java文件找不到了?
  17. 【数据结构】最小瓶颈路 加强版(Kruskal重构树RMQ求LCA)
  18. 阿里iDST NLP负责人司罗:NLP技术怎样一路走到阿里云
  19. 巧用canvas实现画板功能,使用画笔在图片上涂画,橡皮擦可擦除涂画,并保存
  20. 不同波特率传输时间计算

热门文章

  1. 通俗理解条件熵-数学
  2. MLIR(Multi-Level Intermediate Representation Compiler)架构 Infrastructure
  3. 2021年大数据Flink(三十四):​​​​​​​Table与SQL ​​​​​​案例一
  4. 2021年大数据Flink(六):Flink On Yarn模式
  5. .md 文件的格式:写出好看的笔记
  6. Android 自定义View Canvas —— Bitmap
  7. ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0
  8. 赋值语句和赋值表达式
  9. Android运行时候报错:android.view.InflateException: Binary XML file line #19: Binary XML file lin
  10. Plugin with id 'com.novoda.bintray-release' not found的解决方法