【问题标题】:How do I make a "composite key" (and what is this even called)?我如何制作“复合键”(这甚至叫什么)?
【发布时间】:2018-10-04 00:01:06
【问题描述】:

我有两个关键字符串,代表两个不同类别的对象的两个对象。键在它们的类中是唯一的。我需要创建一个代表这两个键组合的唯一键。我该怎么做?

我不能只是连接它们,因为任何字符都可能出现在基本键中。在连接之前,我可能会转义连接分隔符吗?我可以创建两个键的哈希,但这感觉很重。

是否有内置函数可以帮助我做到这一点?这是“叫什么”吗?这似乎是一个常见(已解决)的问题。

(我专门在 Javascript 中寻找这个,但我也对更高级别的解决方案或框架感到好奇)

【问题讨论】:

  • 你不能创建一个包含两个对象键的“键”对象吗?这将是唯一的,您可以在之后访问密钥
  • 我希望使用唯一的字符串(复合键?)作为对这两个对象的引用。它必须是唯一的字符串。 ps——为什么投反对票?这似乎是一个有效的问题。如果有人想帮助我更好地表达或澄清,请成为我的客人。
  • 如果复合键需要是一个字符串,我会说只使用分隔符选项,例如对两个字符串进行 URL 编码,然后用 & 字符连接它们。
  • 我也是这么想的。我很惊讶没有内置功能可以做到这一点......这似乎是一种常见的需求。我仍然想知道是否真的有一个我不知道的名字。
  • 请注意,通过 URL 编码和用 & 分隔(这似乎是一个非常好的主意),你给上下文增加了一点负担 know 什么样的键正在举行。即我是否持有一个允许任意 &s 的单独密钥,或者这是一个编码的连接密钥,它必须只有一个 &。一个关键对象,就像其他人建议的那样,可以用来表示 and 个体或连词,它会知道它是哪一种

标签: javascript algorithm function computer-science theory


【解决方案1】:

简单地连接两个字符串,但在第一个字符串前面加上它的长度和一个分隔符。例如,如果输入字符串为"cat""doorbell",则输出字符串将为"3:catdoorbell"。另一方面,如果输入为"catdoor""bell",则输出为"7:catdoorbell"

使用这种方法,输出是唯一的,并且可以从输出字符串中恢复原始密钥。

【讨论】:

    【解决方案2】:

    创建第三种类型的对象,它有自己的键(或者没有,键是可选的)来跟踪所有组合。如果您正在动态创建这些条目,您可能需要检查并强制执行值的唯一性。

    我通常称之为人行横道表或链接表。

    涵盖该主题的 wiki 页面将其称为关联实体 Wikipedia - Associative entity

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 2014-04-12
      • 2019-08-10
      • 2023-03-05
      • 2016-09-29
      • 2017-05-07
      相关资源
      最近更新 更多