Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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_Arrays_Initialization - Fatal编程技术网

Javascript 使用变量初始化数组:意外标记+;

Javascript 使用变量初始化数组:意外标记+;,javascript,arrays,initialization,Javascript,Arrays,Initialization,我创建了一个简单的函数,它应该初始化一个数组,并在每次调用该函数时从中返回一个随机元素 function test(str) { var myArray = { "Test1 "+ str + " Test1", "Test2 "+ str+ " Test2" } return myArray[Math.random()*myArray.length+0]; } console.log(test("FOO")); 但是我得到

我创建了一个简单的函数,它应该初始化一个数组,并在每次调用该函数时从中返回一个随机元素

function test(str)
{
    var myArray = 
    {
        "Test1 "+ str + " Test1",
        "Test2 "+ str+ " Test2"
    }

    return myArray[Math.random()*myArray.length+0];
}

console.log(test("FOO"));

但是我得到了
未捕获的语法错误:对于JS数组,意外的标记+

使用[]而不是{}

function test(str)
    {
        var myArray =
                [
                    "Test1 "+ str + " Test1",
                    "Test2 "+ str+ " Test2"
                ]

        return myArray[parseInt(Math.random()*myArray.length, 10)];
    }

在您的代码中,myArray不是数组

function test(str){
    var myArray = ["Test1 " + str + " Test1","Test2 " + str + " Test2"] 
    return myArray[(Math.random() * myArray.length) | 0];
}

|
这是位OR运算符。执行操作数1 |操作数2时,两个操作数都将转换为基数2,并对其执行
操作。最后,结果将转换回基数10。因此小数点将被删除。

myArray
不是数组。。。但是
对象(键值对)
+0
总是无用的:)返回myArray[Math.floor((Math.random()*myArray.length))@这将一直提供
未定义的
。@RajaprabhuAravindasamy更新为将double解析为int。谢谢,但我认为@RajaprabhuAravindasamy的解决方案更容易理解。@EdwardBlack parsent(str,b)将str解析为基数为b.-1的整数!我认为这是最好的解决办法。@EdwardBlack很乐意帮忙!:)对很好的解决方案。。只要解释一下,“转换成二进制的基数2”即使没有错,也是令人困惑的。是的,数字将转换为32位整数,但计算机上的所有内容都是“二进制”。这里没有“原始基数”,它是一个浮点数。@Bergi纠正了你说的话。但以2为基数的数字不能用二进制来表示吗?我对此感到困惑。