我想为NodeJS应用程序制作一个算法,将任何给定的字符串转换为1到3位数字(如果数字在1-500之间则更好)。
e.g
ExampleString -> 214
任何人都可以帮我找到一个好的解决方案吗?
修改 我想从用户名(字符串)中获取crime coefficient号码。
答案 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)
function coeficient() {
return Math.floor(Math.random() * 500) + 1;
}
console.log(coeficient());
console.log(coeficient());
console.log(coeficient());
&#13;