js中的sort方法
js中原生的sort()采用快排和插入排序算法,根据比较器对数组排序。
默认是将数组元素转为字符串,然后根据Unicode字符集编号的大小排序。
charCodeAt(index) 返回指定位置字符的 Unicode 编号,取值是 0 - 65535 间的整数,与 charAt() 方法执行的操作相似,后者返回的是单个字符。
如果不提供比较器而对数字组成的数组排序,因为会将数字转为字符串再按编号排序而导致错误。要获得正确的顺序,只需提供比较器函数:function(a,b){return a-b;}即可。
两个字符串之间不可以加减运算,但可以比大小,js会依次比编号的大小,如"
'a'>'A' //为true,因为 "a".charCodeAt(0)-->97, A-->65
"ac">"ab" //为true
按拼音顺序排序:
//按本地语言的顺序排序。中英混合时,中文在前英文在后,再分别按拼音顺序排。
function (a, b) { return a.localeCompare(b); }
按指定的顺序排序:
//按指定的特定顺序排序,相同时再按enu2的顺序排
//利用规则的索引做排序依据
var enu1=['D','E','C','B','A','A0','A00'];
var enu2=['NB','HB','SUV','MPV','SW','Roadster/Coupe/Convertible','-',''];
var toSort= ["A00 HB", "A HB", "A0 SUV", "A0 SUV", "A SUV", "E SUV","D NB","A0 HB", "A SUV", "E MPV", "A NB", "C NB", "C HB", "A MPV", "B NB", "A0 NB", "A0 NB"];
toSort.sort(function(a,b){
if(enu1.indexOf(a.split(' ')[0])<enu1.indexOf(b.split(' ')[0])) return -1;
if(enu1.indexOf(a.split(' ')[0])>enu1.indexOf(b.split(' ')[0])) return 1;
if(enu1.indexOf(a.split(' ')[0])==enu1.indexOf(b.split(' ')[0])) {
return enu2.indexOf(a.split(' ')[1])-enu2.indexOf(b.split(' ')[1])
}
});
//["D NB", "E SUV", "E MPV", "C NB", "C HB", "B NB", "A NB", "A HB", "A SUV", "A SUV", "A MPV", "A0 NB", "A0 NB", "A0 HB", "A0 SUV", "A0 SUV", "A00 HB"]
js中的sort方法的更多相关文章
- JavaScript -- 时光流逝(二):js中数组的方法
JavaScript -- 知识点回顾篇(二):js中数组的方法 1. 数组 (1)定义数组,数组赋值 <script type="text/javascript"> ...
- 你真的会用JavaScript中的sort方法吗
在平时的业务开发中,数组(Array) 是我们经常用到的数据类型,那么对数组的排序也很常见,除去使用循环遍历数组的方法来排列数据,使用JS数组中原生的方法 sort 来排列(没错,比较崇尚JS原生 ...
- JS基础篇--sort()方法的用法,参数以及排序原理
JS基础篇--sort()方法的用法,参数以及排序原理 sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点.语法:arrayObject.sort( ...
- js中的tostring()方法
http://blog.sina.com.cn/s/blog_85c1dc100101bxgg.html js中的tostring()方法 (2013-11-12 11:07:43) 转载▼ 标签: ...
- 秒味课堂Angular js笔记------Angular js中的工具方法
Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunc ...
- JS中通过call方法实现继承
原文:JS中通过call方法实现继承 讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"& ...
- jQuery与JS中的map()方法使用
1.jquery中的map()方法 首先看一个简单的实例: $("p").append( $("input").map(function(){ return $ ...
- python中的sort方法
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
- python中的sort方法使用详解
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不 ...
随机推荐
- android开发之-数据存储Map、HashMap、Hashtable、concurenthashmap区别
选择一个map进行软件基础数据初始化操作,要求第一次初始化后,不修改数据,可能会出现静态类被回收,然后在进行初始化操作? 1.Map :接口 /** * A {@code Map} is a data ...
- 【Android】error opening trace file: No such file or directory (2)
1.问题描述: 运行报错: 12-25 13:35:32.286: E/Trace(1202): error opening trace file: No such file or directory ...
- Entity Framework快速入门--IQueryable与IEnumberable的区别
IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 ...
- EasyUI之Hello world(EasyUI的入门学习)
1:创建一个动态web工程: 去官网http://www.jeasyui.net/download/下载官网文档 我去官网下载的最新版本,个人根据自己的需求下载即可.2:在webConte ...
- Java设计模式:工厂模式
问题提出 Java的工厂模式与现实生活中的工厂的模型是很相似的.工厂是用来做什么?当然是用来生成产品.因此在Java的工厂模式的关键点就是如何描述好产品和工厂这2个角色之间的关系. 下面来仔细描述一下 ...
- vim工具
今天和同事讨论使用什么看代码,使用什么写代码的问题.我觉得source insight用来看代码真的还是蛮舒服的,但是他觉得他习惯了VS,用着顺手. 但是我的想法是,有好的工具,得先花点时间去学习使用 ...
- 51单片机I/O口直接输入输出实例(附调试及分析过程)
51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能 ...
- openssl命令行-证书认证
命令1: openssl genrsa -out root.key 1024 产生一个root.key的私钥 命令2: openssl req -key root.key -new -out ro ...
- IEnumerable<T>和IQueryable<T>
建议29.区别LINQ查询中的IEnumerable<T>和IQueryable<T> LINQ查询方法一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类 ...
- 分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇
分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)--第一篇 简介 首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由 ...