我正在寻找某种算法的名称,我认为应该有一个名称。
该算法可以找出最短的字符串,以便使其与其他字符串在唯一的字符串中独一无二。
就像在JS中一样,给出一个像这样的数组的函数:
[ '1c625b142483629db0a8063cfe5cd418e897154c',
'28d9bf0ecac10311507b339e5d1324412d25cc3e',
'4f3a202a34016cbdf1fc05c3efaaa06f72d3faa3',
'2080d7f2b572196343695a7c60a6f3c6b747246c',
'1903250de6c2a59e6c53dfa907188f2a7204ce76',
'f8227a5a0e8eeea2fd7b47588d95d05755d0eb5b',
'86aed9bd91eee88bb17382fe278a5fdc6f16d583' ]
会返回类似的内容:
[ '1c',
'28',
'4',
'20',
'19',
'f',
'8' ]
注意它返回的所有字符串是长哈希中的第一个字符,只是为了只返回使它们彼此不同的必要条件而缩短。
我将使用它来将哈希值与值匹配。我正在制作一个todo应用程序,我决定使用散列来编辑和/或删除值。所以用户会通过它的散列来引用todo项,但是我不想给用户一个超长散列,只是系统需要知道用户指的是哪一个。
那么如果它有一个名字,那么这种算法会被调用什么呢?
任何帮助或线索都表示赞赏。 :)
编辑:
似乎有关于我将如何使用它的讨论。我只想澄清一点,我不会用这个来存储东西。完整哈希将用作todo任务的密钥,缩短的哈希(a.k.a.最短唯一前缀)仅用于UI。 @ source.rar和@Paul回答了我的问题,这就是名称,我现在正在研究这些实现。很快就会接受回答......
编辑2:
好的。作为一名JS新手,我花费了大量的时间试图自己解决这个问题而不能,最后我的朋友出现并给了我以下解决方案:https://gist.github.com/BruceCaldwell/70e53a456fd858bb03cc
然而,他确实说这不完美,可能会做一些重构,但这取决于我。 ;)答案 0 :(得分:4)