2016-04-22 50 views
-1

我创建了一个简单的函数,它应该初始化一个数组,并在每次调用函数时返回一个随机元素。用变量初始化数组:意外的令牌+

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

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

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

,但我得到的Uncaught SyntaxError: Unexpected token +

+4

'myArray'不是数组...但是'对象(键 - 值对)'' – Rayon

+4

变种myArray的= [ “测试1 ”+ STR +“ 测试1”, “Test2的 ”+ STR +“ 的Test2” ]' – Rayon

+4

和'+ 0'总是没用:) – messerbill

回答

2

在这里,你的代码myArray不是一个数组,

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

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

+0

这是我认为的最佳解决方案。 – Black

+0

@EdwardBlack很高兴帮助! :) –

+0

是的!很好的解决方案..只要解释'| :) :) – Rayon

2

使用[],而不是{}对JS数组。

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

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

@upvoters这会一直提供'undefined'。 –

+0

@RajaprabhuAravindasamy更新为解析double到int。 – Aboelseoud

+0

谢谢,但我认为@RajaprabhuAravindasamy的解决方案更易于理解。 – Black