我有这个问题。我想根据任意6个字母的字符串随机选择数组[1,2,3,4]
,这样如果字符串相同,这个选择总是相同的。
因此,如果我有字符串'dogdog',则函数将始终返回'3'
,但'4'
返回'bigcat'等。
我认为解决方案可能是首先散列字符串。如何将哈希字符串转换为数组中的选择?
答案 0 :(得分:1)
您可以从字符串计算哈希值,并在[hash % array.length]
处获取数组项。 DJB hashfunc的示例(更多信息请参见http://www.cse.yorku.ca/~oz/hash.html):
function djbHash(s) {
let hash = 5381;
for (let c of s) {
hash = hash * 33 + c.charCodeAt(0);
}
return hash;
}
function mapToValues(s, values) {
return values[djbHash(s) % values.length];
}
console.log(mapToValues('dogdog', [1, 2, 3, 4]));
console.log(mapToValues('bigcat', [1, 2, 3, 4]));

答案 1 :(得分:0)
一个非常简单的哈希函数: