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中排序问题总结的更多相关文章

  1. 记录--js中出现的数组排序问题

    这是今天在写vue项目时发生的一个小问题,在此记录一下,方便自己的回顾.项目是前后端分离的,前台主要使用了vue-cli3.0 + mintui,是一个移动端的web app包括了后台发布管理的一些功 ...

  2. js中数组方法大全

    js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...

  3. 5.0 JS中引用类型介绍

    其实,在前面的"js的六大数据类型"文章中稍微说了一下引用类型.前面我们说到js中有六大数据类型(五种基本数据类型 + 一种引用类型).下面的章节中,我们将详细讲解引用类型. 1. ...

  4. 【repost】JS中的异常处理方法分享

    我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...

  5. JS中给正则表达式加变量

    前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下.   一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...

  6. js中几种实用的跨域方法原理详解(转)

    今天研究js跨域问题的时候发现一篇好博,非常详细地讲解了js几种跨域方法的原理,特分享一下. 原博地址:http://www.cnblogs.com/2050/p/3191744.html 下面正文开 ...

  7. 关于js中的this

    关于js中的this this是javascript中一个很特别的关键字,也是一种很复杂的机制,学习this的第一步就是要明白this既不指向函数自身也不指向函数的词法作用域,this实际上是函数被调 ...

  8. 表值函数与JS中split()的联系

    在公司用云平台做开发就是麻烦 ,做了很多功能或者有些收获,都没办法写博客,结果回家了自己要把大脑里面记住的写出来. split()这个函数我们并不陌生,但是当前台有许多字段然后随意勾选后的这些参数传递 ...

  9. JS中 call() 与apply 方法

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

随机推荐

  1. Android studio 项目的layout的文件打开,preview 视图无法显示,提示“no sdk found...”可能原因?

    1.安装android studio后启动,引导新的下载的sdk文件夹,不要默认在c:\users\你的用户名\appdata...下的sdk文件夹. 2.如果已经默认的,重新在settings/pr ...

  2. qt 单文档程序关闭时在delete ui处出现segmentation fault

    做了个显示图片的单文档程序. qt 单文档程序关闭时在delete ui处出现segmentation fault. 调试发现调用两次mainwindow析构函数. http://blog.csdn. ...

  3. mySql 基本语法学习笔记

     create database if not exists yang;    drop database if exists yang;     show databases;   show dat ...

  4. pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量

    闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...

  5. 第一章 JavaScript简史

    JavaScript:  一种使网页具有交互能力的程序设计语言. BOM: 浏览器对象模型,指通过JS用来调整Web浏览器的高度.宽度和位置属性的办法. DHTML: 1.利用HTML标记各种元素   ...

  6. 【CMD】

    1.dir 2. set (不带参数) 查看环境变量. SET [variable=[string]] variable  指定环境变量名. string    指定要指派给变量的一系列字符串. 3.

  7. 微软MVP衣明志告诉你,小白全方位攻略,逆袭互联网达人

    技术专家们的起步之路是不尽相同的,今天我们要介绍的衣明志老师就是一个从普通游戏爱好者修炼成的技术大咖.尽管当时遇到了不少的困难,但是努力坚持自己解决问题让衣明志老师在技术之路上有了自己的特点. 我们先 ...

  8. SpringMVC 对比 struts2

    一.SpringMVC的入口是Servlet,而struts2的入口是filter 二.SpringMVC会稍微比struts2 快些.SpringMVC是基于方法设计的,而struts2是基于类,每 ...

  9. 解决ORA-14450:试图访问已经在使用的事务处理临时表

    select * from dba_objects where object_name='TEMP_MZGL_BRSFD'; select 'alter system kill session ''' ...

  10. MySQL数据库6 -查询基础,简单查询,条件查询,对查询结果排序

    一.SELECT语句 SELECT COL1,COL2,....COLn FROM TABLE1,TABLE2,....TABLEn [WHERE CONDITIONS] -- 查询条件 [GROUP ...