2017-02-20 48 views
-3

我想爲NodeJS應用程序製作一個算法,將任意給定字符串轉換爲1至3位數字(如果數字在1-500之間,則更好) 。將任意字符串轉換爲1-3位數字的算法

e.g 
ExampleString -> 214 

任何人都可以幫我找到一個好的解決方案嗎?

編輯: 我想從用戶名(字符串)得到crime coefficient號碼。

+3

回1似乎是有效 – juvian

+0

我們怎麼會知道如何將字符串轉換?你在想什麼?你有什麼嘗試? –

+0

所以只有500個字符串可能? – G0dsquad

回答

0

好吧,你可以使用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 
+0

這工作正常,無論我測試到現在。謝謝您的幫助。 –

+0

而你需要在for循環中將'i <= str.length'更改爲'i

+0

哦,是的,對於循環中的錯誤感到抱歉。已經修復 – P1ratRuleZZZ

0

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

 
console.log(coeficient()); 
 
console.log(coeficient()); 
 
console.log(coeficient());

+0

這只是生成一個隨機的3位數字。謝謝,但不完全是我想要的。 @ p1ratRulezZZ答案看起來很有希望。 –