考虑:
var myArray = ['January', 'February', 'March'];
如何使用JavaScript从这个数组中选择一个随机值?
考虑:
var myArray = ['January', 'February', 'March'];
如何使用JavaScript从这个数组中选择一个随机值?
当前回答
我找到了一种方法来解决顶部答案的复杂性,只需将变量rand连接到另一个变量,允许该数字在myArray[];的调用中显示。通过删除创建的新数组并处理它的复杂性,我提出了一个可行的解决方案:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var myArray = ['January', 'February', 'March', 'April', 'May'];
var rand = Math.floor(Math.random() * myArray.length);
var concat = myArray[rand];
function random() {
document.getElementById("demo").innerHTML = (concat);
}
</script>
<button onClick="random();">
Working Random Array generator
</button>
</body>
</html>
其他回答
您可以考虑在Array原型上定义一个函数,以便创建一个返回随机元素的方法[].sample()。
首先,要定义原型函数,将以下代码片段放入代码中:
Array.prototype.sample = function(){
return this[Math.floor(Math.random()*this.length)];
}
之后,要从数组中随机抽取一个元素,只需调用.sample():
[1,2,3,4].sample() //=> a random element
我将根据CC0 1.0许可证的条款将这些代码片段发布到公共领域。
如果您有固定的值(如月份名称列表),并且想要一行解决方案
var result = ['January', 'February', 'March'][Math.floor(Math.random() * 3)]
数组的第二部分是一个访问操作,如在JavaScript中为什么[5,6,8,7][1,2]= 8所描述的那样?
如果你需要多次获取一个随机项,那么,显然你会使用函数。一种方法是使该函数成为Array的方法。原型,但这通常会让你因为篡改内置原型而被大声斥责。
但是,你可以将方法添加到特定的数组本身:
var months = ['January', 'February', 'March'];
months.random = function() {
return this[Math.floor(Math.random()*this.length)];
};
这样你就可以随心所欲地使用months.random(),而不会干扰通用的Array.prototype。
与任何随机函数一样,你会冒着连续得到相同值的风险。如果你不想这样做,你需要用另一个属性跟踪之前的值:
months.random=function() {
var random;
while((random=this[Math.floor(Math.random()*this.length)]) == this.previous);
this.previous=random;
return random;
};
如果你要经常做这样的事情,你不想篡改Array。原型,你可以这样做:
function randomValue() {
return this[Math.floor(Math.random()*this.length)];
}
var data = [ … ];
var moreData = [ … ];
data.random=randomValue;
moreData.random=randomValue;
要获得加密强随机项形式数组使用
let rndItem = a=> a[rnd()*a.length|0]; 令RND = ()=> crypto。getRandomValues(新Uint32Array (1) [0] / 2 * * 32; var myArray = ['January', 'February', 'March']; log(rndItem(myArray))
方法1:
使用Math.random()函数获取(0- 1,1)之间的随机数 独家)。 将其乘以数组长度得到数字 (0-arrayLength)之间。 使用Math.floor()获取索引范围 从(0到arrayLength-1)。
Const arr = ["foo","bar"]; const randomlyypickedstring =arr[Math.floor(Math.random() * arr.length)]; console.log (randomlyPickedString);
方法2:
random(a, b)方法用于生成(a到b, b不排除)之间的数字。 取下限值,使数字范围从(1到arrayLength)。 减去1得到从(0到arrayLength-1)的下标。
const arr = [“foo”,“bar”]; const randomlyPickedString=arr[Math.floor(random(1, 5))-1]; console.log(randomlyPickedString);