javascript - 如何从表中删除不等于某个值的行?

标签 javascript jquery

我有一个看起来像这样的表格

R1C1     R1C2     R1C3
R2C1     R2C2     R2C3
R3C1     R3C2     R3C3

以及一个在找到特定单元格值时从表中删除行的函数。效果很好,请参阅下面的函数代码,结果是第 1 行和第 3 行被删除

但是,当我想做相反的事情时 - 通过将比较运算符从 0 更改为 -1(如果找不到字符串,indexOf() 返回什么),仅保留包含指定单元格值的行,函数删除所有行,而不是像我预期的那样删除第 2 行。

任何人都可以阐明这一点,并为我提供如何实现我想要的解决方案吗?

函数代码如下:

function doFunction() {

let array = ['R3C2','R1C3'];

for (var i = 0; i < array.length; i++) {

    var removeRowWithCell = array[i];

    // change the comparison below to === -1 and it deletes all rows

    $('td').filter(function() {
        return $(this).text().indexOf(removeRowWithCell) === 0;
    }).closest('tr').remove();

   }
}

最佳答案

=== -1 的条件转换为“至少有一个单元格不等于‘R3C2’或‘R1C3’的行”。

考虑到这一点(仅每行的第一个单元格与数组“R3C2”分析中的第一项进行比较):

  • 第 1 行单元格 R1C1:"R1C1".indexOf("R3C2") 为 -1 => 单元格被选中,行被删除

  • 第 2 行单元格 R2C1:"R2C1".indexOf("R3C2") 为 -1 => 单元格被选中,行被删除

  • 第 3 行单元格 R3C1:"R2C1".indexOf("R3C2") 为 -1 => 单元格被选中,行被删除

因此,您最终会删除所有行

保留包含数组中某些值的行的函数应如下所示:

function doFunction() {
    let array = ['R3C2','R1C3'];

    var rows = $('tr');

    for(var k = 0; k < rows.length; k++) {
        var currentRow = $(rows[k]);
        var columns = currentRow.find('td');
        var shouldKeepRow = false;  
        for (var i = 0; i < array.length; i++) {
            var removeRowWithCell = array[i];

            // Check if at least one column on this row contains this value
            shouldKeepRow = columns.filter(function() {
                return $(this).text().indexOf(removeRowWithCell) === 0;
            }).length > 0;

            if (shouldKeepRow) {
                break;
            }
        }

        if (!shouldKeepRow) {
            currentRow.remove();
        }
    }
}

关于javascript - 如何从表中删除不等于某个值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55830060/

相关文章:

javascript - 如何使用 JavaScript 从另一个页面访问元素 id?

javascript - 返回 false 时不显示 JQuery 验证自定义方法

javascript - 如何使用 javascript 从大 html 字符串中提取所有超链接标题?

javascript - Eclipse Luna 深色主题无法正确显示 JS

javascript - 使用 jQuery 的 ajax 方法将图像检索为 blob

javascript - 更改字体系列后调整所有字体大小

jquery - 分解 css3 将比例转换为可调整大小的 jquery ui

javascript - 刷新 Firebase token

javascript - 为什么 location.href 上的 "../"给出不同的结果?

javascript - 如何在带有div父级的表中查找文本