在 JavaScript 中從陣列中選擇一個隨機元素
Mehvish Ashiq
2023年1月30日
2022年5月10日
- 在 JavaScript 中從陣列中選擇一個隨機值
-
在 JavaScript 中使用
Math.random()
、array.length
和Math.floor()
從陣列中選擇一個隨機元素 -
在 JavaScript 中使用
Lodash
和Underscore.js
的.sample()
方法從陣列中選擇一個隨機元素 -
在 JavaScript 中使用位運算子
NOT
(~~
) 和OR
(|
) 從陣列中選擇一個隨機元素
本文介紹如何在 JavaScript 中從陣列中選擇隨機元素。它還強調了位運算子 NOT
(~~
) 和 OR
(|
) 的使用,這對於小尺寸陣列很有用。
在 JavaScript 中從陣列中選擇一個隨機值
我們可以使用以下方式從 JavaScript 中的陣列中隨機選擇一個元素:
Math.random()
、array.length
和Math.floor()
一起使用。- 使用
Lodash
和Underscore.js
的.sample()
方法。 - 使用位運算子
NOT
和OR
。
在 JavaScript 中使用 Math.random()
、array.length
和 Math.floor()
從陣列中選擇一個隨機元素
var arrStr = ['Mehvish', 'Tahir', 'John', 'Sania', 'Thomas']
var randElement = arrStr[Math.floor(Math.random() * arrStr.length)];
console.log(randElement);
輸出:
"John"
在上面的示例中,Math.random()
方法用於獲取 0
和 1
之間的隨機數,其中 1
是互斥的,0
是包含的。
然後,將它乘以陣列的大小,得到 0 - array.length
之間的答案。
最後,我們使用 Math.floor()
來獲取 0
到 array.length-1
之間的索引。
var arrInt = [1,3,5,7,2,9,0]
var randElement = arrInt[Math.floor(Math.random() * arrInt.length)];
console.log(randElement);
輸出:
9
在 JavaScript 中使用 Lodash
和 Underscore.js
的 .sample()
方法從陣列中選擇一個隨機元素
let _ = require('lodash');
var arrStr = ['Mehvish', 'Tahir', 'John', 'Sania', 'Thomas']
var randElement = _.sample(arrStr);
console.log(randElement);
輸出:
"Sania"
在這裡,我們使用 lodash 庫的 .sample()
方法,該方法在另一個名為 Underscore.js
的庫的頂部工作。
此方法採用單個引數、一個集合並從該集合中輸出一個隨機元素。
let _ = require('lodash');
var arrInt = [2,5,4,7,9,0,7]
var randElement = _.sample(arrInt);
console.log(randElement);
輸出:
2
我們還可以使用 Underscore.js
庫的 .sample()
方法。不同之處在於它需要兩個引數:列表,第二個是數字。
它告訴你一次需要多少個隨機元素。
var arrInt = [2,5,4,7,9,0,7]
var randElement = _.sample(arrInt);
console.log(randElement);
輸出:
7
var arrInt = [2,5,4,7,9,0,7]
var randElement = _.sample(arrInt,2);
console.log(randElement);
輸出:
[2,9]
不要忘記在使用前匯入 Underscore.js
。你可以在此處找到更多詳細資訊。
在 JavaScript 中使用位運算子 NOT
(~~
) 和 OR
(|
) 從陣列中選擇一個隨機元素
var arrStr = ['Mehvish', 'Tahir', 'John', 'Sania', 'Thomas']
var randElement = arrStr[~~(Math.random()*arrStr.length)];
console.log(randElement)
輸出:
"Tahir"
上面的示例使用了 Math.floor()
方法的替代方法,即按位 NOT
(~~
) 運算子。
但是,它更快,但僅對小尺寸陣列有用。當陣列中有數百萬個元素時,我們不能使用它。
讓我們繼續使用整數陣列的 OR
運算子。對於小型陣列,按位 OR
運算子也更快。
var arrInt = [2,4,6,7,3]
var randElement = arrInt[Math.random()*arrInt.length | 0];
console.log(randElement)
輸出:
6
Author: Mehvish Ashiq