純js對根據table中的兩個字段對table進行去重操作(精華版)

複製代碼
var tdusername = new Array();//用來存放姓名,並且最終冒泡排序的數組;
var tdusername2 = new Array();//用來存放列表中固定順序的姓名數組;
var buffer = new StringBuffer();
function autoRowSpan(tb,row,col) 
{ 
  var lastValue=""; 
  var lastUsername="";
  var value=""; 
  var  username="";
  var pos=1; 
  for(var i=row;i<tb.rows.length;i++){ 
  //排除第二行
    if(i==1){
	continue;
    }else{
	value = tb.rows[i].cells[col].innerText; //	確定第i行第一列的數據---課程名稱
	username = tb.rows[i].cells[col+2].innerText;//確定第i行第三列的數據----學生姓名
	//usernameAndIndex = buffer.append(username).append(i.toString()).toString();//將姓名和它對應的行數組合稱爲字符串放入數組中
	tdusername.push(username);
	tdusername2.push(username);
	if(lastValue == value){ 
	    tb.rows[i].deleteCell(col); //刪除指定的單元格
	    tb.rows[i-pos].cells[col].rowSpan = tb.rows[i-pos].cells[col].rowSpan+1; //合併單元格
	    //tb.deleteRow(i);//刪除指定的行
	    pos++; 
	}else{ 
	    lastValue = value; 
	    pos=1; 
	    } 
        }
    } 
    //遍歷數組
    var nary = tdusername.sort();//冒泡排序的最直接方法
    var rename = "";
    var index1 = "";
    var index2 = "";
    var temp =new Array();//中間數組專門用來存放兩個相同姓名出現的索引位置
    alert(nary);
    alert(tdusername);
    alert(tdusername2);
    for(var j=0;j<tdusername.length;j++){ 
	if (nary[j]==nary[j+1]){//發現重複值,然後根據索引確定對應得課程是否重複,如果重複,則刪除這行
	    rename = nary[j];//重複的內容
	    alert(nary[j]);
		for(var m=0;m<tdusername2.length;m++){
		    if(rename==tdusername2[m]){//數組中第一次出現重複值得到其索引位置
			temp.push(m);
		    }
	        for(var n=1;n<temp.length;n++){//循環臨時數組,拿第一條和接下來每條比較,如果相同,刪除table中的一行數據
		    var firstcourse = tb.rows[temp[0]].cells[0].innerText;//第一條課程數據
		    var othercourse = tb.rows[temp[n]].cells[0].innerText;//其他課程數據
		    alert(firstcourse);
		    alert(othercourse);
		    if(firstcourse==othercourse){
		    tb.deleteRow(temp[n]);
		       }
		    }
	         }
	      }
	   }
     } 

這是本次操作後的列表:根據課程和姓名同時相等去重
這是操作前的列表:

注:若有需要並且看不懂的可以給我留言!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章