如果第二个TD值与另一个TRs TD值类似,我想删除TR,并且它的最后一个TD值不应该是HIT。另一种情况是,如果我有3个具有相同数据的TR,那么应该删除其中的2个,并且应该保留1个。
示例:
UPDATE [TblTest]
SET column.WRITE(@input, NULL, 1) -- length is ignored
WHERE [TblTestID] = @id
我想要的是什么:
<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>
有人可以告诉我如何完成这项任务吗?
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
所以我为你做了这个笨拙的回答。您可以在fiddle here。
中查看编辑:在讨论了应该是什么行为后,我更新了小提琴。所以现在它添加了检查,如果重复项中的任何字段在第四列中具有“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();
}
}
}
});`