切換語言為:簡體

JavaScript中的隨機函式Random的妙用

  • 爱糖宝
  • 2024-09-29
  • 2036
  • 0
  • 0

Math.random()函式想必大家都不陌生,它可以生成一個[0-1)的隨機數,基於此可以根據需要對其進一步處理,例如生成特定範圍內的隨機整數等等。本篇文章為大家介紹的是 random 函式的一些妙用

生成隨機顏色色值

我們都知道色值可以用#000000來表示,其中#為固定字首,後面是 6 位 16 進位制數,那麼我們就可以透過Math.random()生成一個隨機數,再透過toString(16)將整數轉換為 16 進位制字串

JavaScript中的隨機函式Random的妙用

然後我們再從第二位開始擷取 6 位隨機字元再拼上#就可以得到一個隨機顏色色值啦

JavaScript中的隨機函式Random的妙用

但是會有一些特殊情況,比如假如我們隨機到的值是0.25

JavaScript中的隨機函式Random的妙用

此時我們再對其擷取返回的結果就是4,顯然不符合預期,這時候我們可以使用padEnd函式讓其不足 6 位則補0就行了

JavaScript中的隨機函式Random的妙用

最後我們將其寫成一個函式如下

const getRandomColor = () => {
  return `#${Math.random().toString(16).substr(2, 6).padEnd(6, "0")}`;
};

JavaScript中的隨機函式Random的妙用

生成隨機字串

看到這都知道我們可以用random函式來生成隨機字串,生成隨機字串其實很簡單,我們只需要將random函式的結果轉換 36 進位制為字串(包含 a-z,0-9)然後從下標為 2 開始擷取需要的長度即可

JavaScript中的隨機函式Random的妙用

同樣的也有特殊情況,比如我們隨機到的是0.25

JavaScript中的隨機函式Random的妙用

所有和前面處理方式一樣,不足位數則補 0

然後將其寫成一個函式

const getRandomStr = (len) => {
  return Math.random().toString(36).substr(2, len).padEnd(len, 0);
};

這時候聰明的你會發現Math.random().toString(32)返回的隨機字元最多隻有 11 位,但是如果我想生成大於 11 位的隨機字串該如何做?總不能後面都補 0 吧 JavaScript中的隨機函式Random的妙用

這時候聰明的你一定想到了遞迴,沒錯,這裏我們可以使用遞迴的方式來修改一下

const getRandomStr = (len) => {
  return len <= 11
    ? Math.random().toString(36).substr(2, len).padEnd(len, 0)
    : getRandomStr(11) + getRandomStr(len - 11);
};

此時我們便可以生成任意長度字串啦

JavaScript中的隨機函式Random的妙用

生成隨機布林值

要生成隨機的布林值,可以利用 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等等,這些常用的用法這裏就不過多的展開介紹了

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.