根据字符串获取永久数组项

时间:2018-08-16 18:58:50

标签: javascript arrays random hash

我需要根据为传递的字符串计算出的哈希值获得随机数组项:

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

1 个答案:

答案 0 :(得分:2)

您可以使用输入字符串的ASCII码来计算数字。然后使用模数将该数字从0转换为数组的长度。

...
var sum = 0;
str.split('').forEach(a => sum += a.charCodeAt(0));
var magicNumber = sum % arr.length;
return arr[magicNumber]