Javascript 如何从数组中获取随机值?
这是我想出来的,但它不起作用。我没有得到输出 Javascript.jsJavascript 如何从数组中获取随机值?,javascript,Javascript,这是我想出来的,但它不起作用。我没有得到输出 Javascript.js function randomnamegen() { var names = ["Mango", "Pul", "Bat", "Tim", "Mh", "Hei"]; var namein = names(Math.floor((Math.random() * 5) + 0)); document.getElementById("name").innerHTML = namein; } inde
function randomnamegen() {
var names = ["Mango", "Pul", "Bat", "Tim", "Mh", "Hei"];
var namein = names(Math.floor((Math.random() * 5) + 0));
document.getElementById("name").innerHTML = namein;
}
index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Cherry Cheese Danish</title>
</head>
<body>
<button type="button" onclick="randomnamegen()">Click Me!</button>
<p id="name"></p>
<script src="JavaScript.js"></script>
</body>
</html>
丹麦樱桃奶酪
点击我!
我得到一个未捕获的TypeError:object不是GoogleChrome控制台中的JavaScript.js:3函数 对阵列使用
[]
方括号:
var namein = names[ Math.floor((Math.random() * 5) + 0) ];
另外,不必严格使用5
(当您有6个时),您可以让JS进行计数:
Math.random() * names.length
函数randomnamegen(){
变量名称=[“芒果”、“脉冲”、“蝙蝠”、“蒂姆”、“Mh”、“黑”];
var namein=names[Math.floor(Math.random()*names.length)];
document.getElementById(“name”).innerHTML=namein;
}
点击我!
您的代码运行得非常好。您必须在以下位置通过[]更改()
var namein = names(Math.floor((Math.random() * 5) + 0));
正确的答案是:
var namein = names[Math.floor((Math.random() * 5) + 0)];
控制台出现以下错误:“对象不是函数”
检查此链接以查看工作示例
希望有用 - 使用方括号
- 不需要添加0
var namein=names[Math.floor(Math.random()*5)]代码>
或使用^0
进行舍入
var namein=names[Math.random()*5^0]代码>这是一个用于洗牌数组的实现
function shuffle(array) {
var currentIndex = array.length,
temporaryValue,
randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
洗牌数组后,可以检索如下值:
var array = [1, 2, 3, 4, 5];
function retrieve() {
return shuffle(array)[0];
}
如果您不想重复您的项目:
var array = [1, 2, 3, 4, 5],
temp = [];
function retrieve() {
if(temp.length > 0) {
return temp.pop();
} else {
temp = shuffle(array.slice());
return temp.pop();
}
}
但不确定这是否是最佳答案
函数洗牌(数组){
var currentIndex=array.length,
时间价值,
随机指数;
而(0!==currentIndex){
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
临时值=数组[currentIndex];
数组[currentIndex]=数组[randomIndex];
数组[randomIndex]=临时值;
}
返回数组;
}
var数组=[“芒果”、“脉冲”、“蝙蝠”、“提姆”、“Mh”、“黑”];
函数检索(){
document.getElementById(“name”).innerHTML=shuffle(数组)[0];
}
点击我!
使用方括号访问数组项:名称[…]代码>