从两个不同的值创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,则可以轻松添加这些行为中的任何一个。