您的位置:首页 > Web前端 > JavaScript

纯js对根据table中的两个字段对table进行去重操作(精华版)

2017-11-21 11:53 501 查看
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
].cells[0].innerText;//其他课程数据
alert(firstcourse);
alert(othercourse);
if(firstcourse==othercourse){
tb.deleteRow(temp
);
}
}
}
}
}
} 
这是本次操作后的列表:根据课程和姓名同时相等去重
这是操作前的列表:
注:若有需要并且看不懂的可以给我留言!

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript table去重