Math.random()
函式想必大家都不陌生,它可以生成一個[0-1)
的隨機數,基於此可以根據需要對其進一步處理,例如生成特定範圍內的隨機整數等等。本篇文章為大家介紹的是 random 函式的一些妙用
生成隨機顏色色值
我們都知道色值可以用#000000
來表示,其中#
為固定字首,後面是 6 位 16 進位制數,那麼我們就可以透過Math.random()
生成一個隨機數,再透過toString(16)
將整數轉換為 16 進位制字串
然後我們再從第二位開始擷取 6 位隨機字元再拼上#
就可以得到一個隨機顏色色值啦
但是會有一些特殊情況,比如假如我們隨機到的值是0.25
此時我們再對其擷取返回的結果就是4
,顯然不符合預期,這時候我們可以使用padEnd
函式讓其不足 6 位則補0
就行了
最後我們將其寫成一個函式如下
const getRandomColor = () => { return `#${Math.random().toString(16).substr(2, 6).padEnd(6, "0")}`; };
生成隨機字串
看到這都知道我們可以用random
函式來生成隨機字串,生成隨機字串其實很簡單,我們只需要將random
函式的結果轉換 36 進位制為字串(包含 a-z,0-9)然後從下標為 2 開始擷取需要的長度即可
同樣的也有特殊情況,比如我們隨機到的是0.25
所有和前面處理方式一樣,不足位數則補 0
然後將其寫成一個函式
const getRandomStr = (len) => { return Math.random().toString(36).substr(2, len).padEnd(len, 0); };
這時候聰明的你會發現Math.random().toString(32)
返回的隨機字元最多隻有 11 位,但是如果我想生成大於 11 位的隨機字串該如何做?總不能後面都補 0 吧
這時候聰明的你一定想到了遞迴,沒錯,這裏我們可以使用遞迴的方式來修改一下
const getRandomStr = (len) => { return len <= 11 ? Math.random().toString(36).substr(2, len).padEnd(len, 0) : getRandomStr(11) + getRandomStr(len - 11); };
此時我們便可以生成任意長度字串啦
生成隨機布林值
要生成隨機的布林值,可以利用 Math.random()
方法生成一個隨機數,然後根據這個隨機數的大小來決定返回 true
還是 false
。最簡單的方法是生成一個小數,然後判斷這個小數是否大於等於0.5
,如果是則返回 true
,否則返回 false
。
const generateRandomBoolean = () => { return Math.random() >= 0.5; }; // 生成隨機布林值 let randomBoolean = generateRandomBoolean(); console.log(randomBoolean);
random函式還有很多用法,比如可以用上面生成隨機字串的方式來生成隨機驗證碼, 生成[min,max]
之間的數Math.floor(Math.random() * (max - min + 1)) + min
等等,這些常用的用法這裏就不過多的展開介紹了