如何通过可见行索引数组获取数据集的隐藏行索引?
获取数据集中未显示的索引(修复你的代码问题)
当然可以通过visibleRows和dataSet拿到不需要显示的索引,你当前代码的问题主要出在查找效率低和潜在的类型匹配问题上:直接用indexOf遍历大型数组时,每次查找都要扫完整组数据,效率极低;如果visibleRows里的元素和遍历的索引类型不一致(比如存了字符串格式的数字),会导致所有索引都被误判为不在可见列表里。
给你两种高效的实现方式:
方式一:for循环遍历(最直观)
this.hiddenRows = []; // 把可见索引转成Set,查找时间复杂度从O(n)降到O(1) const visibleIndexSet = new Set(this.visibleRows); // 遍历数据集的所有索引 for (let idx = 0; idx < this.dataSet.length; idx++) { if (!visibleIndexSet.has(idx)) { this.hiddenRows.push(idx); } }
方式二:map+filter链式调用(更简洁)
const visibleIndexSet = new Set(this.visibleRows); // 先提取所有索引,再过滤掉可见的 this.hiddenRows = this.dataSet .map((_, idx) => idx) .filter(idx => !visibleIndexSet.has(idx));
额外提示
如果你的visibleRows里存的是从1开始的行号(而非数组默认的0开始索引),记得先把Set里的数值减1,比如:
const visibleIndexSet = new Set(this.visibleRows.map(num => num - 1));
内容的提问来源于stack exchange,提问作者Udders
相关产品推荐
相关产品推荐

