【问题标题】:How to uniquely identify a table row?如何唯一标识一个表行?
【发布时间】:2018-06-27 00:26:28
【问题描述】:

在我的应用程序中,我导入了一个 JSON 文件,然后将其显示在表格中。该表有 3 列。

这有两个问题:

  1. 表也有排序和CRUD操作,所以using the array index for the row key is not best practice。
  2. 与上述类似,我正在尝试实现编辑行的功能,但按索引这样做很挑剔,因为它们可能已从排序或 CRUD 转移。

我想出了一些潜在的解决方案,但它们似乎都很弱:

  1. 通过可见列的组合来唯一标识一行。这有问题,因为虽然该数据集不太可能出现重复行,但我认为这是可能的。
  2. 通过相对保证唯一的字段唯一标识一行。例如,每一行都有一个创建日期,并且由于所有行都是在程序中手动生成的,我相信这可以作为唯一标识行的 ID 吗?感觉有点像按日期识别一行是不好的,但出于某种原因..不确定。
  3. 通过所有字段(可见和隐藏)的组合来唯一标识一行。可能会很慢或不必要的复杂?
  4. 在创建行时,为该行分配一个 ID,该 ID 不会向用户显示并保留在保存的文件中。还可能需要保存一个全局计数器变量(因为如果删除了一行,我们不想重复使用该 ID,我们需要知道我们从哪里停止)。
  5. 为每一行分配一个 GUID?不需要存储索引计数器,但需要更多空间(虽然文件相对较小,所以我不确定这有多重要)。

我还缺少其他或更好的方法吗?这通常是如何处理的?

【问题讨论】:

  • 您已经命名了所有技术,我想到的另一种选择是用一些随机值作为盐对列进行散列并将其用作键。但这与在此特定用例中使用 GUIDs 并没有太大区别。

标签: javascript arrays json reactjs html-table


【解决方案1】:

我会选择 4 或 5,但稍作改动:

您可以保持 JSON 原样。在导入 JSON 时,您映射每个项目并为它们分配ID 或GUID - 为简单起见,我会使用ID,但这取决于您。在您的程序执行期间,该字段将用于 CRUD 操作和/或排序。

当您的程序完成后,再次映射您的数据,并以您收到的相同格式保存(删除您添加的新道具)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多