Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从数组中获取随机值?_Javascript - Fatal编程技术网

Javascript 如何从数组中获取随机值?

Javascript 如何从数组中获取随机值?,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

这是我想出来的,但它不起作用。我没有得到输出

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;

}
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];
}
点击我!

使用方括号访问数组项:
名称[…]