gpt4 book ai didi

javascript - Excel like 列标题选项过滤算法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:54:16 24 4
gpt4 key购买 nike

在 excel 表中,当我在一列上设置过滤器时,它会为另一列过滤不相关的过滤器选项,依此类推。

但我需要知道 Excel 使用什么算法来执行此操作,以及是否有任何 JS 实现。

我尝试在应用新过滤器时更新每列的唯一值列表,但使用这种方法我丢失了先前过滤器列中未选择的选项。 Excel 以某种方式设法保留了它们。

这个问题看起来很相似,但是问的是具体实现,我需要的是算法或者至少是它的名字:Angular JS Excel like filtering .

当前实现的伪代码:

var allRows: {[columnKey]: string}[]
var visibleRows: {[columnKey]: string}[]
var filterColumns: {[columnKey]: string[]}
var columns: { columnKey: string }[]
var uniqueValues: {[columnKey]: string[]}

/* when header menu opens it gets unique values
from the column as filter options */
function getHeaderValues(columnKey): string[] {
return uniqueValues[columnKey]
}

/* when user applies filter this function is being called
to update visible rows and unique values */
function setFilter(filterColumn: string, values: string[]) {
filterColumns = {
...filterColumns,
[filterColumn]: values
}

visibleRows = getRows(allRows, filterColumns)
uniqueValues = updateUniqueValues(columns, visibleRows)
}

最佳答案

像这样的算法的基本思想是,每个过滤器都是根据当前可用数据计算的。应用过滤器时,其他过滤器会根据一组新的当前可用值重新计算。考虑以下数据:

FOO BAR
===========
1 1
1 2
2 3
2 4

FOO 过滤器的值为 1、2,BAR 过滤器的值为 1、2、3、4。当我将 FOO 过滤为 1 时,工作表显示:

FOO BAR
===========
1 1
1 2

并重新计算所有过滤器的可用值。现在我们看到 BAR 将只有 1,2 的值。

编辑以添加进一步说明:
1. 初始过滤:来自完整数据的所有列
2.过滤A列,现在A列不重新计算,但其他列都是
3.过滤B列:B列不重新计算,但包括A列在内的所有其他列
4. 所以你永远不能点击会导致没有数据的过滤器
5. 在第 4 步中,您确实失去了按所有内容过滤 A 列的选项 - 但这很好!因为给定 B 上的过滤器,您不能通过不可用的东西来过滤 A。这会导致空集,但是通过使用这种迭代方法重新计算过滤器可以防止这种情况

关于javascript - Excel like 列标题选项过滤算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49072886/

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