2016-04-22 27 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