我需要根据为传递的字符串计算出的哈希值获得一个随机数组项:
var animals = [ 'dog', 'cat', 'horse', 'cow', 'tiger', 'trump' ];
function getFixedItem(str, arr) {
//magic goes here
var hash = anyFunctionToCalcHash(str);
var magicNumber = ???; // calculated based on hash, must be between 0 and arr.length - 1
return arr[magicNumber];
}
预期类似:
getFixedItem('john doe', animals); // returns cat
getFixedItem('john moe', animals); // returns horse
getFixedItem('john doe', animals); // returns cat
getFixedItem('abc102030', animals); // returns trump
getFixedItem('john doe', animals); // returns cat
最佳答案
您可以使用输入字符串的ASCII码来计算数字。然后使用模数将该数字从0转换为数组的长度。
...
var sum = 0;
str.split('').forEach(a => sum += a.charCodeAt(0));
var magicNumber = sum % arr.length;
return arr[magicNumber]