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 相关文章推荐
图片onload事件触发问题解决方法
Jul 31 Javascript
js AppendChild与insertBefore用法详细对比
Dec 16 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
JQuery实现网页右侧随动广告特效
Jan 17 Javascript
javascript中数组和字符串的方法对比
Jul 20 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
Vue.js实现列表清单的操作方法
Nov 15 Javascript
vue todo-list组件发布到npm上的方法
Apr 04 Javascript
JS高级技巧(简洁版)
Jul 29 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
Aug 28 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
处理单名多值表单的详解
2013/06/08 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
Python isinstance函数介绍
2015/04/14 Python
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
python列表list保留顺序去重的实例
2018/12/14 Python
详解pandas删除缺失数据(pd.dropna()方法)
2019/06/25 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
出纳的岗位职责
2013/11/09 职场文书
营销总经理的岗位职责
2013/12/15 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
三八妇女节主持词
2015/07/04 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS