2015-04-16 20 views
1

我生成具有隨機數據元素設置與另外生成的隨機元素的屬性,像這樣:生成「逐個」

generateCards : function(n) 
     { 
      var actions = ['press', 'blue-right', 'blue-left', 'red-right', 'red-left'], 
       i = n, 
       ran, 
       actions_cpy = actions.slice(); 

      for (; i--;) { 
       ran = (Math.random() * actions_cpy.length)|0; 
       $('#container-game-mobile').prepend(
        $('<div>', { 
        // remove and return a random string from the array 
        'class': 'game-card-mobile', 
        'data-action': actions_cpy.splice(ran, 1)[0] 
        }) 
       ); 
       // load the array backup with values when it is empty 
       if (actions_cpy.length === 0) { 
        actions_cpy = actions.slice(); 
       } 
      } 
     } 

功能在那裏有更多的或更少的等量的方式工作來自actions數組的每個數據屬性。我最初生成10個元素,所以n = 10由於應用程序的性質,每次在.game-card-mobile上執行操作時,我將其銷燬並需要生成新的,因此請致電上述功能,但現在用n = 1。問題在於,我不知何故需要調用仍然不同的元素,因此防止「藍右」出現一遍又一遍。

+0

當'n = 1'時''ran'仍然返回一個隨機數嗎? – guest271314

+0

@ guest271314是的它的確如此 – Ilja

+0

'actions_cpy.splice(ran,1)[0]'''''''''''''''''''''返回隨機數和'n = 1'時不會從'actions_cpy'返回隨機項? – guest271314

回答

1

這有點令人困惑,但我認爲我得到了這個問題。

您需要的功能,讓您的操作,該功能將返回隨機此陣,這個功能,通過一個PARAM你隨機上次行動的,如果你隨機相同的最後一個隨機,再次調用相同的函數,它會阻止你的問題。