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>

(0)

相关推荐

  • JavaScript实现多维数组的方法

    在C#里,定义多维数组,可以通过这样简单的代码实现: 复制代码 代码如下: int[,]myArray=new int[4,5]; 在JavaScript中不能通过直接定义实现多维数组,那么该怎么实现呢?首先定义一维数组: 复制代码 代码如下: var myArray=new Array(); 然后再将一维数组的成员定义成数组(之所以可以进行再定义,因为JavaScript是弱类型): 复制代码 代码如下: myArray[0]=new Array(); 到此为止,就定义了一个第一个索引为0的二

  • js处理自己不能定义二维数组的方法详解

    复制代码 代码如下: var a= new Array(new Array(1,2),new Array('b','c')); document.write(a[1][1]); 说白了,就是利用for循环定义二维数组! ?<script language="javascript" type="text/javascript">     function Array_2(nRow,nColumn){         var array1=new Array

  • js sort 二维数组排序的用法小结

    最近在搞js 排序的问题,因为数据库排序太耗资源,如果能转移到客户端去排序,能大大D减少服务器内存消耗.客户端的话,除了js,就是as了,可惜我as学得太烂,所以只能选择js来研究研究了...经过我的测试,js内置方法sort的效率非常高 我们知道在js中默认提供了sort函数,但是这个函数默认是按照数组内容的ascii码升序进行排列的,如果我们要对二维数组排序要如何做呢?在php中是有multi_sort函数可供调用的,但是在js中似乎没有这种函数,但是没关系 ,因为js的sort函数其实也提

  • JavaScript实现数组降维详解

    二维数组降维 二维数组只有两个维度,降维比较简单,也不用考虑太复杂的算法逻辑,我们看一下二维数组降维的几种方法: 遍历降维 var arr = [ ['h', 'e', 'l', 'l', 'o'], ['m', 'y'], ['w', 'o', 'r', 'l', 'd'], ['!'] ]; var result = []; for (var r = 0; r < arr.length; r++) { for (var c = 0; c < arr[r].length; c++) { re

  • javascript二维数组转置实例

    本文实例讲述了javascript二维数组转置的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <script language="javascript" type="text/javascript"> var arr1 = [[30,-1,90],[70,100,-40],[39,29,6],[39,92,9]]; var arr2 = []; //确定新数组有多少行 for(var i=0;i<arr1[0].length

  • Javascript 二维数组

    复制代码 代码如下: <script language="JavaScript"> var x=3, y=4; var data = new Array(x); for (var i=0; i<x; i++) { data[i] = new Array(y); } for (var i=0; i<x; i++) { for (var j=0; j<y; j++) { data[i][j] = i + j; } } // var myarr = new Ar

  • javascript 二维数组的实现与应用

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>二维函数</

  • 定义JavaScript二维数组采用定义数组的数组来实现

    1. javaScript没有提供直接定义二维数组的方法,但可以使用定义数组的数组来定义JavaScript二维数组:例如定义一个 4X3二维数组a可以采用如下方法: var a=new Array(); a[0]=new Array(); a[1]=new Array(); a[2]=new Array(); a[3]=new Array(); 下面是一个事例 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/

  • js二维数组定义和初始化的三种方法总结

    方法一:直接定义并且初始化,这种遇到数量少的情况可以用 var _TheArray = [["0-1","0-2"],["1-1","1-2"],["2-1","2-2"]] 方法二:未知长度的二维数组 var tArray = new Array(); //先声明一维 for(var k=0;k<i;k++){ //一维长度为i,i为变量,可以根据实际情况改变 tArray[k]

  • JS二维数组的定义说明

    1.二维数组声明方式是下面这样的:var images=new Array(); //先声明一维 for(var i=0;i<10;i++){ //一维长度为10 images[i]=new Array(); //在声明二维 for(var j=0;j<20;j++){ //二维长度为20 images[i][j]=1; } } 2.二级数组使用方式应该是这样子的: alert(images[0][0]);

随机推荐