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. HTML5 History API 实现无刷新跳转

     在HTML5中, 1. 新增了通过JS在浏览器历史记录中添加项目的功能. 2. 在不刷新页面的前提下显示改变浏览器地址栏中的URL. 3. 添加了当用户单击浏览器的后退按钮时触发的事件. 通过以上三 ...

  2. BAE hibernate c3p0数据库连接池

    根据BAE官方文档:bae是不支持连接池的,但今天试验却能实现hibernate c3p0连接池,避免mysql连接超时 hibernate主配置文件hibernate.cfg.xml代码 <! ...

  3. 提高开发效率的十五个Visual Studio 2010使用技巧

    相信做开发的没有不重视效率的.开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS.能够对一个IDE产生依赖,说明这个IDE确实有它的独特之处.无容置疑,VS是一个非常强大的IDE,它支持多 ...

  4. ado.net中,数据的批量处理

    //btBigImport按钮点击事件 private void btBigImport_Click(object sender, RoutedEventArgs e)        { //连接字符 ...

  5. arduino--1s间隔闪烁灯

    初始使用Arduino,写了这么个小功能:1s间隔闪烁灯 void setup() { pinMode(,OUTPUT);//Set 13Pin as OUTPUT } void loop() { d ...

  6. 转:js中this、call、apply的用法

    (一)关于this首先关于this我想说一句话,这句话记住了this的用法你也就差不多都能明白了:this指的是当前函数的对象.这句话可能比较绕,我会举出很多例子和这句话呼应的!(看下文)1.首先看下 ...

  7. Java优化

    Java初级优化 1. 对于明确不需要派生的类,添加final修饰符,此时该类的所有方法都是final的.Java编译器会寻找机会内联(inline)所有的final方法.(能使性能提升50%)2. ...

  8. JavaScript onblur 和 onkeyup事件用法

    1.onblur表示失去焦点的时候被调用: 2.onkeyup表示键盘每输入完一个字符之后发生.简单来讲,就是键盘上的按键被放开的时候触发. 例子: <!DOCTYPE HTML PUBLIC ...

  9. lumia520刷机注意事项

    1.下载后的固件名称中设备名前的随机字符都要去掉 2.安装完nokia care suit后最好在driver目录下重新双击安装usb driver

  10. 几个常见的布局的多种实现方式及margin负值总结

    第一部分:几个常见的布局实现方式 一.左右两边固定, center中间自适应未知 html代码中 center 部分首先要放在box的最前部分.然后是left,right 圣杯布局: <div ...