gpt4 book ai didi

javascript - 使用列和全局过滤器过滤表 - 最有效的方法?

转载 作者:行者123 更新时间:2023-12-03 05:14:21 30 4
gpt4 key购买 nike

我有一大块 json 数据,我想使用表以最有效的方式过滤客户端。每个 header 都有一个输入过滤器,用户可以在其中输入字符串来过滤该特定属性。还有一个全局输入过滤器,用户可以在其中发出“自由文本搜索”。

一直在考虑如何做到这一点,并且很想听听您对此事的看法。

用于可视化表格的示例

+---------------+
| Global filter |
+---------------+

+----------+---------+----------+-----------+
| Column 1 | Colum 2 | Column 3 | Column 4 |
+----------+---------+----------+-----------+
| ... | ... | ... | ... |
+----------+---------+----------+-----------+
<小时/>

选项 1:

单击过滤器输入后:

  1. 从所有已填充的过滤器(点击的过滤器除外)中生成一组数据,并将其缓存。
  2. 按键时 - 根据第 1 步的结果过滤数据。

这样就可以了。但仍然意味着一些开销,因为某些搜索会进行多次。

<小时/>

选项 2:

  1. 按键时 - 根据缓存的搜索进行过滤
  2. 模糊时 - 当前结果会覆盖缓存的搜索。

如果我所做的只是添加过滤器,效果会更好。但当我想更改已填充的过滤器时,逻辑就会“中断”。

<小时/>

选项 3:

这将是 1 和 2 的混合。单击过滤器输入后:

  1. 如果过滤器不包含默认值(即用户没有输入过滤器数据),则基于除当前过滤器之外的所有过滤器生成缓存。
  2. 按键时 - 根据缓存的搜索进行过滤
  3. 模糊时 - 当前结果会覆盖缓存的搜索。
<小时/>

我自己集思广益,选项 3 是我在简单性和性能方面能想到的最佳方法。

我走的路正确吗?你觉得怎么样?

/帕特里克

最佳答案

第三个选项更好,但看起来有一个小问题。假设您正在使用基于 AND 的过滤,您应该采用这样的步骤

  1. 如果过滤器不包含默认值(即用户没有输入过滤器数据),则基于除当前过滤器之外的所有过滤器生成缓存。
  2. 如果过滤器包含某些值,则丢弃缓存。从除点击的过滤器之外的所有填充的过滤器中生成一组数据,并将其缓存。
  3. 按键时 - 根据上述缓存结果进行过滤。
  4. 模糊时 - 当前结果会覆盖缓存的搜索。

详细信息 = [
{用户:"A",位置:"堪萨斯"},
{用户:"B",位置:"堪萨斯"},
{用户:"C",位置:"凤凰城"},
{用户:“D”,位置:“凤凰城”}
]

假设[ ]是一个文本框。一开始两者都是空的[用户=“”][位置=“”]

现在用户输入一个城市[用户=] [位置=堪萨斯]

//final cache :[{user:"A",location:"kansas"},{user:"B",location:"kansas"}]

现在用户尝试输入用户名

[用户=A] [位置=堪萨斯]

用于搜索的缓存:[{user:"A",location:"kansas"},{user:"C",location:"kansas"}]

// final cache after step 3: `[{user:"A",location:"kansas"}]`

现在用户想要进入另一个城市[user=A] [location=phoenix]//给出 0 个结果

用于搜索的缓存:[{user:"A",location:"kansas"}]

每当通过某个过滤器(例如“位置”)进行过滤时,您不应使用之前已被此过滤器减少的结果集。

关于javascript - 使用列和全局过滤器过滤表 - 最有效的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669597/

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