2016-04-22 11 views
-1

私は配列を初期化し、関数が呼び出されたときに毎回、それから1つのランダムな要素を返す必要があります簡単な関数を作成しました。配列:予期しないトークン+

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

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

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

は、しかし、私はJSアレイの使用[]の代わりに{}のUncaught SyntaxError: Unexpected token +

+4

'myArray'は "Test2を "+ STR +" Test2を"、アレイ...しかし'オブジェクト(キーと値のペア) '' – Rayon

+4

VAR MyArrayという= [ "Test1を "+ STR +" Test1を" ではありません ] ' – Rayon

+4

と' + 0 'は常に役に立たない:) – messerbill

答えて

2

myArrayこれは、ビット賢明OR演算子である

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

得ます。

ここにあなたのコード内の
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

関連する問題