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

 更新时间:2014年01月24日 09:50:51   作者:  
本篇主要是对js二维数组排序的简单示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助

如下所示:

复制代码 代码如下:

<!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>

相关文章

  • HTML5实现微信拍摄上传照片功能

    HTML5实现微信拍摄上传照片功能

    这篇文章主要介绍了HTML5实现微信拍摄上传照片功能,实现HTML5 Canvas手机拍摄,本地压缩上传图片时遇到问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 扩展JavaScript功能的正确方法(译文)

    扩展JavaScript功能的正确方法(译文)

    JavaScript已经内置了很多强大的方法,但有时你需要的某个功能在内置的方法中没有,我们怎么来优雅地扩展JavaScript功能呢
    2012-04-04
  • js操作滚动条事件实例

    js操作滚动条事件实例

    这篇文章主要介绍了js操作滚动条事件的方法,实例分析了滚动条的使用技巧与相关注意事项,需要的朋友可以参考下
    2015-01-01
  • 谈谈target=_new和_blank的不同之处

    谈谈target=_new和_blank的不同之处

    这篇文章主要介绍了target="_new"和"_blank"的区别实例详解,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • JS动画定时器知识总结

    JS动画定时器知识总结

    这篇文章给大家总结了关于JS动画中定时器的相关用法以及相关知识点总结,有需要的朋友可以参考学习下。
    2018-03-03
  • JavaScript创建对象的方式小结(4种方式)

    JavaScript创建对象的方式小结(4种方式)

    这篇文章主要介绍了JavaScript创建对象的方式,结合实例形式总结分析了四种创建对象的方式,并附带分析了JavaScript对象复制的技巧,需要的朋友可以参考下
    2015-12-12
  • 浅谈发布订阅模式与观察者模式

    浅谈发布订阅模式与观察者模式

    这篇文章主要介绍了浅谈发布订阅模式与观察者模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • ReactHooks+ts(函数组件)实现原生轮播的示例

    ReactHooks+ts(函数组件)实现原生轮播的示例

    这篇文章主要介绍了ReactHooks+ts函数组件实现原生轮播,在这里下载依赖第一个是js依赖第二个是ts依赖,通过实例代码介绍了创建tsx文件的方法,需要的朋友可以参考下
    2022-05-05
  • Bootstrap禁用响应式布局的实现方法

    Bootstrap禁用响应式布局的实现方法

    这篇文章主要介绍了Bootstrap禁用响应式布局的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 干货分享:让你分分钟学会javascript闭包

    干货分享:让你分分钟学会javascript闭包

    干货分享:让你分分钟学会javascript闭包,如何才能快速学会javascript闭包,本文为大家揭晓
    2015-12-12

最新评论