将任何字符串转换为1-3位数字的算法

时间:2017-02-20 17:04:31

标签: javascript node.js algorithm

我想为NodeJS应用程序制作一个算法,将任何给定的字符串转换为1到3位数字(如果数字在1-500之间则更好)。

e.g
ExampleString -> 214

任何人都可以帮我找到一个好的解决方案吗?

修改 我想从用户名(字符串)中获取crime coefficient号码。

2 个答案:

答案 0 :(得分:0)

好的,您可以使用JS函数获取字母的charCode

let str = "some string example";
let sum = 0;
for (let i=0; i<str.length; i++) {
  sum += parseInt(str[i].charCodeAt(0), 10); // Sum all codes
}

// Now we have some value as Number in sum, lets convert it to 0..1 value to scale to needed value
let rangedSum = parseFloat('0.' + String(sum)); // Looks dirty but works
let resultValue = Math.round(rangedSum * 500) + 1; // Same alogorythm as using Math.random(Math.round() * (max-min)) + min;

我希望它有所帮助。

因此,当您使用nodejs时,可以使用加密库来获取字符串的md5哈希值,然后将其设置为HEX。

const crypto = require('crypto');
let valueHex = crypto.createHash('md5').update('YOUR STRING HERE').digest('hex');
// then get it as decimal based value
let valueDec = parseInt(valueHex, 16);
// and apply the same algorythm as above to scale it between 1-500

答案 1 :(得分:0)

&#13;
&#13;
function coeficient() {
  return Math.floor(Math.random() * 500) + 1;
}

console.log(coeficient());
console.log(coeficient());
console.log(coeficient());
&#13;
&#13;
&#13;