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 相关文章推荐
JS 页面自动加载函数(兼容多浏览器)
May 18 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
jquery.validate提示错误信息位置方法
Jan 22 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 Javascript
vue.js响应式原理解析与实现
Jun 22 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
May 21 Javascript
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
IIS下PHP的三种配置方式对比
2014/11/20 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
js中有关IE版本检测
2012/01/04 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
JS实现点击掉落特效
2021/01/29 Javascript
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
土建工程师岗位职责
2014/06/10 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
赤壁观后感(2)
2015/06/15 职场文书
公司宣传语大全
2015/07/13 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
用Python远程登陆服务器的步骤
2021/04/16 Python
Pytest allure 命令行参数的使用
2021/04/18 Python
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
Mysql事务索引知识汇总
2022/03/17 MySQL
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers