很多時我們也會在程式用上 Random String,用來作為暫時的 ID 或者用來生產 TOKEN。
### TL;DR
我們可以使用隨機數字來生產隨機的字串。以下 Script 可以產生 8 個位的隨機字串 :
```js
// create random string
Math.random().toString(36).slice(2, 10);
```
### 原理
以上的 Script 其實是把使用 `Math.ramdom()` 生產出來的隨機數字變成 36 進位的字串。由此推理出,也可以生成其他進位的字串 :
```js
// hexadecimal
Math.random().toString(16).slice(2);
// octadecimal
Math.random().toString(8).slice(2);
// binary
Math.random().toString(2).slice(2);
```
### 實作
不過以上都只可以當作為快速用途,生成的字符都是在 a-z 及 0-9 之間,如果要加入更多的字符,就要用較為複雜的邏輯了。
```js
/**
* generate random string
*/
function randStr(length) {
// result container
var result = [];
// characters pool
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
// create random string
for (var i = 0; i < length; i++) {
// get random position character
result.push(chars.charAt(Math.floor(Math.random() * chars.length)));
}
// return result
return result.join('');
}
// print random string with 8 characters
console.log(randStr(8));
```
> 參考資料 : https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript