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为基数的数字不能用二进制来表示吗?我对此感到困惑。