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的版本实现执行不同的代码
May 11 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
jquery实现简单易懂的图片展示小例子
Nov 21 Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 Javascript
JavaScript中的无阻塞加载性能优化方案
Oct 10 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
超实用的JavaScript表单代码段
Feb 26 Javascript
COM组件中调用JavaScript函数详解及实例
Feb 23 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
微信小程序位置授权处理方法
Jun 13 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
Mar 02 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 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
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
基于php iconv函数的使用详解
2013/06/09 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
php生成zip文件类实例
2015/04/07 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
老生常谈JQuery data方法的使用
2016/09/09 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
电子商务专业实习生自我鉴定
2013/09/24 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
《称象》教学反思
2014/04/25 职场文书
学校创先争优活动总结
2014/08/28 职场文书