从两个不同的值创build一个公用密钥,不pipe顺序如何

例如:我有key1 =“abc”和key2 =“xyz”。

我想写一个函数,将返回相同的值,不pipe参数的顺序。

所以foo(key1,key2)和foo(key2,key1)应该都是相同的值ex。 “123”。

我正在考虑某种哈希algorithm,但不太清楚最好的方法是尽可能地提高效率。

将不胜感激任何想法,我正在执行它在JavaScript / node.js

如果input是string,那么您可以对string进行sorting,合并它们,然后对组合的string进行散列。 sorting会得到一个一致的散列值,不pipe传入的键的顺序如何。

function foo(key1, key2) { var sortedKeys = Array.prototype.slice.call(arguments).sort(); return makeHash(sortedKeys.join("-")); } 

您可以根据需要提供makeHash()函数。 这里有一些哈希函数的可能性 。

注意:这个实现可以使用任意数量的参数。 如果您只想使用前两个参数,或者如果有多个或less于两个参数,则要引发exception,则可以轻松添加这些行为中的任何一个。