js二维数组排序的简单示例代码


Posted in Javascript onJanuary 24, 2014

如下所示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <meta name="Generator" content="EditPlus">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <script type="text/javascript">
  <!-- function getCard(m){
  var ret = [], rnd; 
  for(var i = 0; i < m; i++){
   rnd = Math.floor(Math.random()*(i+0.9999));
   ret[i] = ret[rnd];
   ret[rnd] = i
  }
  return ret;
 }
 var data = [];
 {
  for(var i = 0; i < 100; i ++){
   data.push(getCard(10));
  }
 }
 // 二维数据排序
 function mySort(array, col, ord, b, e){
  if(array.length == 0) return;
  //document.write("排序前"+array);
  var t = [], s, i, curCol = col[0];
  for(i = b; i < e; i ++){
   s = new String(array[i][curCol]);
   s._obj = array[i];
   t.push(s)
  }
  t.sort();
  if(ord[0] == "des"){
   t.reverse();
  }
  for(i = 0; i < e - b; i++){
   //document.write("<br/>");
   //document.write(array[i]);
   //document.write("<br/>");
   //document.write(t[i]._obj);
   //document.write("<br/>");
   //document.write(t[i]._obj == array[b+i]);
   array[b+i] = t[i]._obj;
  }
  //document.write("排序后====================<br/>")
  //print(array);
  var begin, end;
  if(col.length > 1){
   col.shift();
   ord.shift();
   begin = b;
   for(i = b; i < e - b - 1; i++){
    if( array[i][curCol] != array[i+1][curCol] ){
     end = i+1;
     //document.write("begin="+begin+"end="+end+"<br/>");
     mySort(array,col,ord,begin,end);
     begin = end;
    }
   }
   if(begin != e){
    mySort(array,col,ord,begin,e);
   }
  }

  //document.write("<br/>");
  //document.write("排序后"+array);
 }
 function print(data){
  for(var i = 0; i < data.length; i++){
   document.write(data[i]+"<br/>");
  }
 }
 document.write("排序前====================<br/>");
 print(data);
 var b = new Date().getTime();;
 mySort(data, [0,1,2],['asc','des','asc'],0,data.length); 
 document.write("用时"+(new Date().getTime() - b));
 document.write("排序后====================<br/>")
 print(data);
  //-->
  </script>
 </head>
 <body>
 </body>
</html>
Javascript 相关文章推荐
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
Jul 07 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
Vue.js bootstrap前端实现分页和排序
Mar 10 Javascript
tween.js缓动补间动画算法示例
Feb 13 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
js实现延迟加载的几种方法详解
Jan 19 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
在vue中阻止浏览器后退的实例
Nov 06 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 Javascript
react实现复选框全选和反选组件效果
Aug 25 Javascript
js中数组(Array)的排序(sort)注意事项说明
Jan 24 #Javascript
Array 重排序方法和操作方法的简单实例
Jan 24 #Javascript
JS数组去重与取重的示例代码
Jan 24 #Javascript
关于js数组去重的问题小结
Jan 24 #Javascript
js数组去重的常用方法总结
Jan 24 #Javascript
JQuery的$和其它JS发生冲突的快速解决方法
Jan 24 #Javascript
js判断60秒以及倒计时示例代码
Jan 24 #Javascript
You might like
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
JavaScript delete 属性的使用
2009/10/08 Javascript
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python中的两个内置模块介绍
2015/04/05 Python
python getopt详解及简单实例
2016/12/30 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python字典的遍历3种方法详解
2019/08/10 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
PyTorch-GPU加速实例
2020/06/23 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
二年级小学生评语
2014/04/21 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
Redis实现分布式锁的五种方法详解
2022/06/14 Redis