js中排序问题总结
js的排序中通常使用到sort函数,可以用冒泡排序,插入排序,快速排序,希尔排序,系统方法等方法,本文结束后分享一个用着排序算法的链接,感兴趣可以了解了解。
1、常见的对一般数组进行排序,代码如下:
var a =[ 1,3,123,41,5];
//js sort 排序 a-b 从小到大排序, b-a 从大到小排序
function sort(){
a.sort(function(a,b){
return a-b;
});
};
console.log(a);
2、对特殊数组的排序,代码如下:
// 期望结果[张1广州,小张4广州,李2上海,小李3上海,赵5深圳,王7北京]
var arr = [
["张", "1:00", "广州"],
["小张", "4: 00", "广州"],
["王", "7: 00", "北京"],
["李", "2: 00", "上海"],
["小李", "3: 00", "上海"],
["赵", "5: 00", "深圳"]
]; var tmp = "广州,上海,深圳,北京";
arr.sort(function(a, b) {
var da = new Date("1111/1/1," + a[1].replace(/^\s*|\s*$/g, '') + ":0");
var db = new Date("1111/1/1," + b[1].replace(/^\s*|\s*$/g, '') + ":0");
var pa = tmp.indexOf(a[2]),
pb = tmp.indexOf(b[2]);
if (pa > pb) {
return 1;
} else if (pa < pb) {
return -1;
} else {
if (da > db) {
return 1;
} else if (da < db) {
return -1;
} else {
return 0;
}
}
});
3、对一个数组对象来排序,代码如下:
// 按照对象属性来排序 希望返回结果:
/* {"name":"aa","age":21,"place":"cplace"},
{"name":"aa","age":21,"place":"eplace"},
{"name":"aa","age":22,"place":"aplace"},
{"name":"aa","age":22,"place":"cplace"},
{"name":"aa","age":22,"place":"dplace"},
{"name":"aa","age":23,"place":"dplace"},
{"name":"bb","age":21,"place":"eplace" },
{"name":"bb","age":22,"place":"vplace" },
{"name":"bb","age":24,"place":"fplace" },
{"name":"cc","age":12,"place":"aplace"},
{"name":"ee","age":29,"place":"fplace"},*/
var myArry = [{"name":"bb","age":22,"place":"vplace" },
{"name":"cc","age":12,"place":"cplace"},
{"name":"aa","age":21,"place":"cplace"},
{"name":"aa","age":23,"place":"dplace"},
{"name":"aa","age":21,"place":"eplace"},
{"name":"aa","age":22,"place":"aplace"},
{"name":"aa","age":22,"place":"cplace"},
{"name":"aa","age":22,"place":"dplace"}, {"name":"bb","age":24,"place":"fplace" },
{"name":"ee","age":29,"place":"fplace"},
{"name":"bb","age":21,"place":"eplace" }]
myArry.sort(function(a,b){
if(a.name< b.name){
return -1;
}else if(a.name > b.name) {
return 1;
}else {
if(a.age< b.age){
return -1;
}else if(a.age> b.age){
return 1;
}else {
if(a.name< b.name){
return -1;
}else if(a.age> b.age){
return 1;
}else{
return 0;
} }
}
})
4、对一个数组对象按照指定顺序排列,代码如下:
var myArry = [{"name":"渭南","age":22,"place":"vplace" },
{"name":"商洛","age":12,"place":"cplace"},
{"name":"汉中","age":22,"place":"dplace"},
{"name":"西安","age":23,"place":"dplace"},
{"name":"延安","age":21,"place":"eplace"},
{"name":"榆林","age":22,"place":"aplace"},
{"name":"宝鸡","age":22,"place":"cplace"},
{"name":"铜川","age":24,"place":"fplace" },
{"name":"榆林","age":21,"place":"cplace"}];
var temp = "西安,汉中,渭南,商洛,延安,榆林,宝鸡,铜川";
myArry.sort(function(a,b){
var pa = temp.indexOf(a.name);
var pb = temp.indexOf(b.name);
if(pa< pb){
return -1;
}else if(pa > pb) {
return 1;
}else {return 0;
}
})
另外分享一个连接:http://www.cnblogs.com/idche/archive/2011/02/16/1956397.html 讲的是冒泡排序,插入排序,快速排序,希尔排序,系统方法等方法进行排序。
js中排序问题总结的更多相关文章
- 记录--js中出现的数组排序问题
这是今天在写vue项目时发生的一个小问题,在此记录一下,方便自己的回顾.项目是前后端分离的,前台主要使用了vue-cli3.0 + mintui,是一个移动端的web app包括了后台发布管理的一些功 ...
- js中数组方法大全
js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...
- 5.0 JS中引用类型介绍
其实,在前面的"js的六大数据类型"文章中稍微说了一下引用类型.前面我们说到js中有六大数据类型(五种基本数据类型 + 一种引用类型).下面的章节中,我们将详细讲解引用类型. 1. ...
- 【repost】JS中的异常处理方法分享
我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
- js中几种实用的跨域方法原理详解(转)
今天研究js跨域问题的时候发现一篇好博,非常详细地讲解了js几种跨域方法的原理,特分享一下. 原博地址:http://www.cnblogs.com/2050/p/3191744.html 下面正文开 ...
- 关于js中的this
关于js中的this this是javascript中一个很特别的关键字,也是一种很复杂的机制,学习this的第一步就是要明白this既不指向函数自身也不指向函数的词法作用域,this实际上是函数被调 ...
- 表值函数与JS中split()的联系
在公司用云平台做开发就是麻烦 ,做了很多功能或者有些收获,都没办法写博客,结果回家了自己要把大脑里面记住的写出来. split()这个函数我们并不陌生,但是当前台有许多字段然后随意勾选后的这些参数传递 ...
- JS中 call() 与apply 方法
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
随机推荐
- ARC和MRC混编
在targets的build phases选项下Compile Sources下选择要不使用arc编译的文件,双击它,输入 -fno-objc-arc 即可 MRC工程中也可以使用ARC的类.方法如下 ...
- PHP初步(上)
一.php语法 PHP是一种嵌入式脚本语言,所以,我们需要标记出哪些是PHP代码,哪些是html代码.当html和php代码进行混编的时候,文件必须要以php结尾(否则Apache不会将这个文件交给p ...
- python登录执行命令
#-*- coding: utf-8 -*- #!/usr/bin/python import paramiko import threading import getpass def ssh2(ip ...
- ssh 无密码登陆
ssh -i littlesuccess-aws.pem root@172.31.36.91 "cat >> ~/.ssh/authorized_keys" < ...
- 安装 mbed os 开发环境yotta
feature: 采用Python编写, Pip 包管理 CMake, the build system that yotta usesa compiler, to actually compile ...
- xcode意外退出
完全不明所以的频繁退出 第一种 排除SVN冲突 在团队开发中,SVN冲突是最常见的了,程序异常时查看SVN文件冲突基本上成了本能. 排除SVN冲突 首先,右键主项目文件即xcodeproj文件,显示包 ...
- 使用jQuery实现点击左右滑动切换特效
使用jQuery实现点击左右滑动切换特效: HTML代码如下: <!--整体背景div--> <div class="warp"> <!--中间内容d ...
- Asp.net Web API 返回Json对象的两种方式
这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName ...
- Qt 获取本机ip地址 【转自 CSDN jpchen609
QString str; QHostInfo info=QHostInfo::fromName(QHostInfo::localHostName()); //定义一个HostInfo的对象然后对这个对 ...
- android基础(五)网络数据解析方法
在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...