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的函数重名看其初始化方式
Mar 08 Javascript
对象特征检测法判断浏览器对javascript对象的支持
Jul 25 Javascript
html 锁定页面(js遮罩层弹出div效果)
Oct 27 Javascript
js中判断对象是否为空的三种实现方法
Dec 23 Javascript
javascript日期处理函数,性能优化批处理
Sep 06 Javascript
javascript事件冒泡简单示例
Jun 20 Javascript
详解webpack + react + react-router 如何实现懒加载
Nov 20 Javascript
vue better-scroll插件使用详解
Jan 25 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
layui清除radio的选中状态实例
Nov 14 Javascript
JavaScript实现缓动动画
Nov 25 Javascript
js判断两个数组相等的5种方法
May 06 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
php代码优化及php相关问题总结
2006/10/09 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
JavaScript中通过提示框跳转页面的方法
2016/02/14 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
Javascript继承机制详解
2017/05/30 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
python 字符串格式化代码
2013/03/17 Python
Python3基础之基本数据类型概述
2014/08/13 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
高中生活自我鉴定
2014/01/18 职场文书
关于环保的建议书400字
2014/03/12 职场文书
求职自我评价范文100字
2014/09/23 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL