`
savefrom
  • 浏览: 42258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

javascript排序

阅读更多
var   indexCol;   
    //比较函数,用于Array.sort()排序时比较用。   
    //本函数比较数组元素array1[indexCol]和元素array2[indexCol]Unicode值的大小   
    function   arrayCompare(array1,array2){   
      //alert(array1.length+"--"+array1[indexCol]);   
      if   (array1[indexCol]   <   array2[indexCol])   
        return   -1;   
      if   (array1[indexCol]   >   array2[indexCol])   
        return   1;   
        
      return   0;   
      
    }   
    //比较数组元素array1[indexCol]和元素array2[indexCol]的数值大小   
    function   arrayCompareNumber(array1,array2){   
        
      if   (parseInt(array1[indexCol])   <   parseInt(array2[indexCol]))   
        return   -1;   
      if   (parseInt(array1[indexCol])   >   parseInt(array2[indexCol]))   
        return   1;   
        
      return   0;   
    }   
    
    //与arrayCompare相反方式比较大小,用于倒序使用   
    function   arrayCompareRev(array1,array2){   
        
      if   (array1[indexCol]   <   array2[indexCol])   
        return   1;   
      if   (array1[indexCol]   >   array2[indexCol])   
        return   -1;   
        
      return   0;   
      
    }   
    //与arrayCompareNumber相反方式比较大小,用于倒序使用   
    function   arrayCompareNumberRev(array1,array2){   
      if   (parseInt(array1[indexCol])   <   parseInt(array2[indexCol]))   
        return   1;   
      if   (parseInt(array1[indexCol])   >   parseInt(array2[indexCol]))   
        return   -1;   
        
      return   0;   
    }   
      
    //define   a   2-dimension   array     
    function   BiArray(rows,cols){   
        
      //simulate   multidimension   array   
      this.rows   =   rows;   
      this.cols   =   cols;   
        
      //construct   array   
      var   lines   =   new   Array(rows);   
      for(var   i   =   0;i   <   lines.length;   i++){   
        lines[i]   =   new   Array(cols);   
      }   
    
  //   设置数组在(i,j)的元素值为value   
      this.setElement   =   function(i,j,value){   lines[i][j]   =   value;   };   
        
      //   获取数组在(i,j)处元素的值   
      this.getElement   =   function(i,j){return   lines[i][j];};   
        
      //   返回数组第i行所在的数组   
      this.getLine   =   function(i){return   lines[i];};   
        
      //   根据第j列字符串的值,对数组的行进行排序,排序结果为升序   
      this.sortLine   =   function(j){   
                indexCol   =   j;   
                lines.sort(arrayCompare);   
              };   
        
      //   根据第j列数值的值,对数组的行进行排序,排序结果为升序   
      this.sortLineByNumber   =   function(j){   
                indexCol   =   j;   
                lines.sort(arrayCompareNumber);   
              };   
        
      //   根据第j列字符串的值,对数组的行进行排序,排序结果为倒序   
      this.sortLineRev   =   function(j){   
                indexCol   =   j;   
                lines.sort(arrayCompareRev);   
              };   
        
      //   根据第j列数值的值,对数组的行进行排序,排序结果为倒序   
      this.sortLineByNumberRev   =   function(j){   
                indexCol   =   j;   
                lines.sort(arrayCompareNumberRev);   
              };   
      //将二维数组转为字符串格式   
      this.toString   =   function(){   
                var   rst   ="";   
                for(var   i   =   0;   i   <   lines.length;   i++){   
                  for(var   j   =   0;   j   <   lines[i].length;   j++){   
                    rst   +=   lines[i][j];   
                    rst   +=   '\t';   
                  }   
                  rst   +=   '\n';   
                }   
                return   rst;   
              };   
    }   //   end   of   BiArray   define   
      
    //ascending   or   descending     
    var   asce   =   true;   
    
    /**   
      对表格中指定范围的数据进行排序   
      tableId         要排序的表格的id,值格式为   <table   id="tb1"   >   
      sortCol         用于排序的列号,从1开始计数   
      compareType       排序时比较方式,s-按字符串比较,n-按数值比较   
      startRow       排序范围起始行号,从1开始计数   
      endRow           排序范围结束行号,从1开始计数   
      startCol       排序范围起始列号,从1开始计数   
      endCol           排序范围结束列号,从1开始计数   
    */   
    function   sortTableInRange(tableId,sortCol,compareType,startRow,endRow,startCol,endCol){   
        
        
      try{   
        var   table   =   document.getElementById(tableId);   
        //   get   all   row   object   of   the   table   
        var   objRows   =   table.getElementsByTagName("tr");   
        //alert(objRows.length);   
          
        endRow   =   (endRow   <   objRows.length   ?   endRow   :   objRows.length);   
          
        var   sortRows   =   endRow   -   startRow   +   1;   
        //alert("sortRows   "+sortRows);   
        if   (sortRows   <   2)   //only   one   line,don't   sort   
          return   ;   
          
          
        endCol   =   (endCol   <   objRows[1].getElementsByTagName("td").length   ?   endCol   :   
            objRows[1].getElementsByTagName("td").length);   
          
          
        //   column   number   of   sort   
        //var   cols   =   objRows[1].childNodes.length;   
        var   cols   =   endCol   -   startCol   +   1;   
            
          
            
        //   define   a   array   to   store   table   cell   and   sort   them   
        var   tabData   =   new   BiArray(sortRows,cols);   
          
          
        var   ari   =   0;   
        //   retrived   table   cell   data   save   to   array   
        for(i   =   startRow   -   1;   i   <   endRow;   i++){   
          //retrived   all   <td>   cell   
          var   cells   =   objRows[i].getElementsByTagName("td");   
            
          var   arj   =   0;   
          for(var   j   =   startCol   -   1;   j   <   endCol;   j++){   
            tabData.setElement(ari,arj,cells.item(j).innerHTML);   
            arj++;   
              
          }   
          ari++;   
        }   
          
        if   (asce){   
          if   (compareType   ==   "n"   ||   compareType   ==   'N')   
            tabData.sortLineByNumber(sortCol-   startCol);   
          else   
            tabData.sortLine(sortCol   -   startCol);   
          asce   =   false;   
        }else{   
          if   (compareType   ==   "n"   ||   compareType   ==   'N')   
            tabData.sortLineByNumberRev(sortCol   -   startCol);   
          else   
            tabData.sortLineRev(sortCol   -   startCol);   
          asce   =   true;   
        }   
        ari   =   0;   
        //update   table   data   with   array   
        for(i   =   startRow   -1;   i   <   endRow;   i++){   
          //retrived   all   <td>   cell   
          var   cells   =   objRows[i].getElementsByTagName("td");   
            
          arj   =   0;   
          for(var   j   =   startCol   -   1;   j   <   endCol;   j++){   
            cells.item(j).innerHTML   =   tabData.getElement(ari,arj);   
            arj++;   
          }   
          ari++;   
        }   
    
      }catch(e){   
        alert(e);   
      }   
    }   
    
    /**   
      对表格除第一行外的数据行排序,是sortYableInRange(tableId,sortCol,compareType,2,tabRows,1,tabCols)   
      的特例。   
      tableId         要排序的表格的id,值格式为   <table   id="tb1"   >   
      用于排序的列号,从1开始计数   
      compareType       排序时比较方式,s-按字符串比较,n-按数值比较   
    */   
    function   sortTable(tableId,sortCol,compareType){   
      try{   
        var   table   =   document.getElementById(tableId);   
        //   get   all   row   object   of   the   table   
        var   objRows   =   table.getElementsByTagName("tr");   
        //alert(objRows.length);   
          
        var   endRows   =   objRows.length;   
          
        if   (endRows   <   2)   //only   one   line,don't   sort   
          return   ;   
          
        //   column   number   of   table   
        var   cols   =   objRows[1].getElementsByTagName("td").length;   
          
          
        sortTableInRange(tableId,sortCol,compareType,2,endRows,1,cols);   
          
      }catch(e){   
        alert(e);   
      }   
    }   
分享到:
评论

相关推荐

    javascript排序表格

    javascript动态排序表格 javascript动态排序表格 javascript动态排序表格 javascript动态排序表格

    使用 JavaScript 排序数据并渲染到页面+源码+demo演示

    使用 JavaScript 排序数据并渲染到页面+源码+demo演示 使用 JavaScript 排序数据并渲染到页面+源码+demo演示 使用 JavaScript 排序数据并渲染到页面+源码+demo演示 使用 JavaScript 排序数据并渲染到页面+源码+...

    javascript排序算法实现

    排序算法是计算机科学的基础,JavaScript中的排序算法实现可以帮助我们更高效地处理数组数据。本篇文章将详细探讨JavaScript中几种常见的排序算法及其实现。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,...

    JavaScript排序算法动画演示效果的实现方法

    ### JavaScript排序算法动画演示效果的实现方法 实现JavaScript排序算法动画演示效果是一个涉及前端技术栈的有趣话题。其核心在于如何将排序算法的每一步骤用动画的形式展示给用户,同时保证动画的流畅性和准确性。...

    基于javascript排序算法

    基于javascript的排序算法源码,包括冒泡排序、选择排序、希尔排序、插入排序、快速排序、归并排序、基数排序、堆排序

    javascript排序分页(转载)

    本篇文章将详细探讨如何使用JavaScript,结合jQuery库,来实现数据的分页显示以及表格内容的排序。 **一、排序** 在JavaScript中,数组的排序可以使用`Array.prototype.sort()`方法。这个方法接受一个比较函数作为...

    JavaScript排序二叉树

    简单的JavaScript排序二叉树,方便理解,由浅入深学习必备

    Javascript表格排序大全

    3. **原生JavaScript排序**:你可以通过获取表格数据,对其进行排序,然后重新渲染表格。例如,使用`Array.prototype.sort()`函数对表格数据进行排序,再利用DOM操作更新表格内容。 4. **事件监听**:为了实现点击...

    javascript经典特效---数字排序.rar

    在这个“数字排序.rar”压缩包中,我们很可能是看到了一个关于如何使用JavaScript进行数字排序的实例。 在JavaScript中,数组的排序可以通过`Array.prototype.sort()`方法来实现。这个方法接受一个可选的比较函数...

    JavaScript 中常见排序算法详解.pdf

    JavaScript 中常见排序算法详解

    javascript排序函数实现数字排序

    javascript排序函数实现数字排序 [removed] function SortNumber(obj,func) //定义通用排序函数 { //参数验证,如果第一个参数不是数组或第二个参数不是函数则抛出异常 if(!(obj instanceof Array) || !(func ...

    javascript 操作 Table 排序

    JavaScript排序主要通过数组的`sort()`方法实现,但这个方法并不直接适用于HTML表格。首先,我们需要获取表格数据并将其转换为二维数组。这可以通过遍历表格的所有行和单元格来完成: ```javascript let table = ...

    javascript直接排序

    JavaScript 直接排序是一种在前端对数据进行处理的技术,它主要应用于从服务器获取数据后,对数据进行客户端的动态排序,以满足用户交互时的实时排序需求。在本例中,我们关注的是如何利用JavaScript对从数据库读取...

    javascript数组的sort方法排序例子

    运用javascript排序,数组的sort方法

    JavaScript实现表格排序

    这篇我们将深入探讨如何使用JavaScript实现表格排序,包括对数字、日期和汉字的排序。 首先,我们需要理解HTML表格的基本结构,通常由`&lt;table&gt;`、`&lt;tr&gt;`(行)、`&lt;th&gt;`(表头)和`&lt;td&gt;`(数据单元格)组成。为了...

    sortingjs:with用JavaScript实现的排序算法集合

    JavaScript排序算法 使用JavaScript实现的排序算法集合。 到目前为止,我们已经在此介绍了 , , 算法。 有关更多排序算法,请继续关注! 运行此应用程序 该项目是使用commonjs约定编写的,即在nodejs环境中编写的,...

    JavaScript-数据排序添加.rar

    这个名为"JavaScript-数据排序添加.rar"的压缩包显然包含了与使用JavaScript处理数据排序和添加相关的资源。下面我们将深入探讨这些知识点。 首先,我们看到一个名为"data.css"的文件,这通常用于定义网页的样式。...

    leetcode刷题免费吗-Node-Sort-Algorithms:基于众所周知的算法制作的Node.js和javascript排序库包括:

    javascript 排序库包括:珠排序、重力排序、桶排序、分箱排序、计数排序、插入排序、合并排序、基数排序 排序算法是一种将列表中的元素按一定顺序排列的算法。 最常用的顺序是数字顺序和字典顺序。 高效排序对于优化...

Global site tag (gtag.js) - Google Analytics