Javascript 如果TR的TD'内有特定文本,如何删除TR;jquery中有什么?

Javascript 如果TR的TD'内有特定文本,如何删除TR;jquery中有什么?,javascript,jquery,html,html-table,Javascript,Jquery,Html,Html Table,如果TR的第二个TD值与另一个TRs TD值相似,并且它的最后一个TD值不应该被命中,我想删除TR。另一种情况是,如果我有3个TRs具有相同的数据,那么其中2个应该被删除,1个应该保留在那里 例如: <table> <tr> <td>ID</td> <td>Ref No</td> <td>Name</td> <td>Result</td> <

如果TR的第二个TD值与另一个TRs TD值相似,并且它的最后一个TD值不应该被命中,我想删除TR。另一种情况是,如果我有3个TRs具有相同的数据,那么其中2个应该被删除,1个应该保留在那里

例如:

<table>
<tr>
    <td>ID</td>
    <td>Ref No</td>
    <td>Name</td>
    <td>Result</td>
</tr>

<tr>
   <td>1</td>
   <td>1121</td>
   <td>Joseph</td>
   <td>CLEAR</td>
</tr>

<tr>
   <td>2</td>
   <td>1122</td>
   <td>Mike</td>
   <td>CLEAR</td>
</tr>

<tr>
   <td>3</td>
   <td>1122</td>
   <td>Mike</td>
   <td>CLEAR</td>
</tr>

<tr>
   <td>4</td>
   <td>1122</td>
   <td>Mike</td>
   <td>HIT</td>
</tr>

<tr>
   <td>5</td>
   <td>1123</td>
   <td>Jim</td>
   <td>HIT</td>
</tr>

<tr>
   <td>6</td>
   <td>1124</td>
   <td>James</td>
   <td>CLEAR</td>
</tr>

<tr>
   <td>7</td>
   <td>1124</td>
   <td>James</td>
   <td>CLEAR</td>
</tr>

<tr>
   <td>8</td>
   <td>1124</td>
   <td>James</td>
   <td>CLEAR</td>
</tr>

</table>

身份证件
参考号
名称
结果
1.
1121
约瑟夫
清楚的
2.
1122
迈克
清楚的
3.
1122
迈克
清楚的
4.
1122
迈克
打
5.
1123
吉姆
打
6.
1124
詹姆斯
清楚的
7.
1124
詹姆斯
清楚的
8.
1124
詹姆斯
清楚的
我想要的是:

<table>
<tr>
    <td>ID</td>
    <td>Ref No</td>
    <td>Name</td>
    <td>Result</td>
</tr>

<tr>
   <td>1</td>
   <td>1121</td>
   <td>Joseph</td>
   <td>CLEAR</td>
</tr>    

<tr>
   <td>4</td>
   <td>1122</td>
   <td>Mike</td>
   <td>HIT</td>
</tr>

<tr>
   <td>5</td>
   <td>1123</td>
   <td>Jim</td>
   <td>HIT</td>
</tr>

<tr>
   <td>6</td>
   <td>1124</td>
   <td>James</td>
   <td>CLEAR</td>
</tr>

</table>

身份证件
参考号
名称
结果
1.
1121
约瑟夫
清楚的
4.
1122
迈克
打
5.
1123
吉姆
打
6.
1124
詹姆斯
清楚的
有人能告诉我如何完成这项任务吗


任何帮助都将不胜感激。

所以我给了你这个笨拙的回答。你可以在网上查一下

编辑:在讨论了行为应该是什么之后,我更新了小提琴。因此,现在它添加了检查副本中是否有任何字段在第四列中具有“HIT”值的检查,它将保留第一行的HIT值,否则它将为每个唯一的第二列值保留第一个值

我确信有一种更好/更简单/更有效的方法可以使用jQuery实现这一点,但这正是我想到的。基本算法如下:获取所有行并迭代。对于每一行:在第二个td(列)中查找值,检查所有后续行,在第二个列中获取值并进行比较。如果它们相同,则从DOM中删除重复的行

//get the table rows, this should be done with a different selector if there are more tables e.g. with class or id...
$tableRows = $("tr");

//iterate over all elements (rows)
$tableRows.each(function(index, element) {
  var $element = $(element);
  //get the value of the current element
  var currentRowValue = $element.find("td:nth-child(2)").text();

  //check all elements that come after the current element if the value matches, if so, remove the matching element
  for (var i = index + 1; i < $tableRows.length; i++) {
    var $rowToCompare = $($tableRows[i]);
    var valueToCompare = $rowToCompare.find("td:nth-child(2)").text();

    if(valueToCompare === currentRowValue) {
      //remove the duplicate from dom
      //if the second row (the duplicate) has 4th column of "HIT" then keep the second row and remove the first row
      var duplicateRowFourthColumnVal = $rowToCompare.find("td:nth-child(4)").text();
      if(duplicateRowFourthColumnVal == "HIT") {
        $element.remove();
      }
      else {
        $rowToCompare.remove();
      }
    }
  }
});`
//获取表行,如果有更多的表,例如带有类或id的表,则应使用不同的选择器来完成此操作。。。
$tableRows=$(“tr”);
//迭代所有元素(行)
$tableRows.each(函数(索引、元素){
变量$element=$(element);
//获取当前元素的值
var currentRowValue=$element.find(“td:nth-child(2)”).text();
//如果值匹配,请检查当前元素后面的所有元素,如果匹配,请删除匹配的元素
对于(变量i=index+1;i<$tableRows.length;i++){
var$rowToCompare=$($tableRows[i]);
var valueToCompare=$rowToCompare.find(“td:nth-child(2)”).text();
如果(valueToCompare==currentRowValue){
//从dom中删除副本
//如果第二行(副本)有第四列“命中”,则保留第二行并删除第一行
var duplicateRowFourthColumnVal=$rowToCompare.find(“td:nth-child(4)”).text();
如果(duplicateRowFourthColumnVal==“命中”){
$element.remove();
}
否则{
$rowToCompare.remove();
}
}
}
});`

相似是什么意思?与另一行相同的值。。。他想创建一个表子集-只有行,其中第二列只有唯一的值(我想):@Noah请参阅我提供的示例。你会明白的。@flynorc是的,你说对了。试着开始学习javascript编程当前的fiddle不会删除tr。它只会获取以下行的值并记录下来。你是对的。我忘了更新链接@MarcCompte谢谢你的注意。我现在更新了。如果您对如何改进解决方案有任何想法,请分享:)第二个循环只能对
:contains()
选择器返回的元素执行。应该需要对值进行双重检查(12也将匹配121),但重复次数会更少。我不知道这是否意味着大数据集的性能会显著提高。我也不知道是否会使用大数据集。@flynorc我试过了,但没有满足我的要求(让我们来。