例如: 我有key1 =" abc"和key2 =" xyz"。
我想编写一个函数,无论参数的顺序如何,都会返回相同的值。
所以foo(key1,key2)和foo(key2,key1)都应该是相同的值ex。 " 123"
我正在考虑某种哈希,但不太确定哪种方法可以使其尽可能高效。
感谢任何想法,我在javascript / node.js
中实现它答案 0 :(得分:3)
如果输入是字符串,那么您可以只对字符串进行排序,组合它们然后对组合字符串进行哈希处理。无论传入的键的顺序如何,排序都会为您提供一致的哈希值。
function foo(key1, key2) {
var sortedKeys = Array.prototype.slice.call(arguments).sort();
return makeHash(sortedKeys.join("-"));
}
您可以根据需要提供makeHash()
功能。哈希函数的这里是some possibilities。
注意:此实现需要任意数量的参数。如果您只想使用前两个参数,或者想要在有多于或少于两个参数的情况下抛出异常,则可以轻松添加其中任何一个行为。