考虑:
var myArray = ['January', 'February', 'March'];
如何使用JavaScript从这个数组中选择一个随机值?
考虑:
var myArray = ['January', 'February', 'March'];
如何使用JavaScript从这个数组中选择一个随机值?
当前回答
Faker.js有许多生成随机测试数据的实用函数。在测试套件的上下文中,这是一个很好的选择:
const faker = require('faker');
faker.helpers.arrayElement(['January', 'February', 'March']);
正如评论者所提到的,您通常不应该在产品代码中使用这个库。
其他回答
您可以考虑在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许可证的条款将这些代码片段发布到公共领域。
Randojs使这更简单和可读:
console.log(rando(['January', 'February', 'March'])。值); < script src = " https://randojs.com/1.0.0.js " > < /脚本>
~~比Math.Floor()快得多,所以当涉及到使用UI元素生成输出的性能优化时,~~赢得了比赛。更多信息
var rand = myArray[~~(Math.random() * myArray.length)];
但是,如果您知道数组将有数百万个元素,那么您可能需要在位操作符和Math.Floor()之间重新考虑,因为位操作符对大数字的表现很奇怪。请参阅下面的输出示例。
var number = Math.floor(14444323231.2); // => 14444323231
var number = 14444323231.2 | 0; // => 1559421343
简单功能:
var myArray = ['January', 'February', 'March'];
function random(array) {
return array[Math.floor(Math.random() * array.length)]
}
random(myArray);
OR
var myArray = ['January', 'February', 'March'];
function random() {
return myArray[Math.floor(Math.random() * myArray.length)]
}
random();
OR
var myArray = ['January', 'February', 'March'];
function random() {
return myArray[Math.floor(Math.random() * myArray.length)]
}
random();
在我看来,与其把原型搞得乱七八糟,或者及时声明,我更喜欢把它暴露在窗口:
window.choice = function() {
if (!this.length || this.length == 0) return;
if (this.length == 1) return this[0];
return this[Math.floor(Math.random()*this.length)];
}
现在,在你的应用程序的任何地方,你可以这样称呼它:
var rand = window.choice.call(array)
这样你仍然可以正确地使用for(x in array)循环