我想爲NodeJS應用程序製作一個算法,將任意給定字符串轉換爲1至3位數字(如果數字在1-500之間,則更好) 。將任意字符串轉換爲1-3位數字的算法
e.g
ExampleString -> 214
任何人都可以幫我找到一個好的解決方案嗎?
編輯: 我想從用戶名(字符串)得到crime coefficient號碼。
我想爲NodeJS應用程序製作一個算法,將任意給定字符串轉換爲1至3位數字(如果數字在1-500之間,則更好) 。將任意字符串轉換爲1-3位數字的算法
e.g
ExampleString -> 214
任何人都可以幫我找到一個好的解決方案嗎?
編輯: 我想從用戶名(字符串)得到crime coefficient號碼。
好吧,你可以使用JS函數來獲取信
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;
我希望它能幫助的則charCode。
因此,當您使用nodejs時,可以使用crypto庫來獲取字符串的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
這工作正常,無論我測試到現在。謝謝您的幫助。 –
而你需要在for循環中將'i <= str.length'更改爲'i
哦,是的,對於循環中的錯誤感到抱歉。已經修復 – P1ratRuleZZZ
function coeficient() {
return Math.floor(Math.random() * 500) + 1;
}
console.log(coeficient());
console.log(coeficient());
console.log(coeficient());
這只是生成一個隨機的3位數字。謝謝,但不完全是我想要的。 @ p1ratRulezZZ答案看起來很有希望。 –
回1似乎是有效 – juvian
我們怎麼會知道如何將字符串轉換?你在想什麼?你有什麼嘗試? –
所以只有500個字符串可能? – G0dsquad