gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:46:40 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com