2012-08-05 42 views
1

「工作」的例子是在這裏(這個腳本與三角形動畫待遇)的Javascript選擇陣列設置一個隨機對象

http://movable.pagodabox.com/

完整的代碼在這裏:http://pastebin.com/rgPNxHgJ

這個問題主要是關於正確的語法。我有以下幾點:

shape.transitionTo({ 
    offset: { 
      x: 10, 
      y: 10 
    } 
}) 

我想要做的是有「X」和「Y」隨機從數組中選擇,例如:

movementIn = [ 
     {x: 34, y: 66}, 
     {x: -34, y: -66} 
    ], 

    shape.transitionTo({ 
     offset: movementIn[Math.floor(Math.random() * movementIn.length)], 
    }); 

但這似乎沒有不正在工作......它似乎只是每次都選擇第一項。我在這裏做錯了什麼?

如何選擇隨機的X和Y對並將其插入「偏移量」參數?

謝謝!

+0

語法看起來是正確的......也許問題是你初始化值,而不是每次都得到一個新的價值?很難說沒有上下文。 – McGarnagle 2012-08-05 01:33:31

+1

'',''看起來不合適(在兩個地方,一個語法錯誤,另一個語義錯誤)。請在jsfiddle [關注具體問題]和* exact *代碼上粘貼[minimal]測試用例。 – 2012-08-05 01:37:57

+0

http://stackoverflow.com/questions/4550505/getting-random-value-from-an -array – 2012-08-05 01:54:34

回答

1

"Works for me"

arr = ["a","b","c"] 
res = "" 
for (i = 0; i < 10; i++) { 
    res += arr[Math.floor(Math.random() * arr.length)] 
} 
alert(res) 

注意,這是不是「正確」的方式選擇一個項目的分佈稍微傾斜..

有一些語法語義問題與在應該探討的問題中的代碼:

{ 
    although_SomeBrowsers: "accept me", 
    iAmAnInvalidLiteral: "BecauseThereIsAnExtraComma", 
} 

我覺得觸輪,在這裏你去:

arr = [{x:1,y:-1},{x:2,y:-2},{x:3,y:-3}] 
for (i = 0; i < 10; i++) { 
    AN_OBJECT = arr[Math.floor(Math.random() * arr.length)] 
    // do whatever you want to do with what AN_OBJECT names 
    alert("x: " + AN_OBJECT.x + " y: " + AN_OBJECT.y) 
} 
+0

感謝pst,但這不是一樣的......在我的數組中,有兩對,其中每個數組項都是X和Y對......我只是覺得我做得不太對! – 2012-08-05 01:45:23

+0

@ j-man86完全一樣。無論選擇什麼*對象*都無關緊要。仍然會選擇一個單獨的對象。將'res ='「'改爲'res = []'和'res + ='改爲'res.push',然後你就得到了一個任意對象的數組。我的觀點是發佈的代碼* Works Here *,它的錯誤是固定的。這個想法是正確的。 – 2012-08-05 01:45:50

+0

也許我不會問正確的問題:我如何選擇一個隨機的X和Y對並將其插入到「偏移量」參數中? – 2012-08-05 01:47:37