2017-04-02 57 views
1

的等量我有現在這樣:如何產生不同的字符串

var generateIcons = function(playtime, players) { 
var count = playtime/2; 
icons = []; 
for (var i = 1; i <= count; i++) { 
    if (i % 8 === 0 && players === 8) { 
     icons.push("cyan"); 
    } 
    else if (i % 7 === 0 && players >= 7) { 
     icons.push("violet"); 
    } 
    else if (i % 6 === 0 && players >= 6) { 
     icons.push("orange"); 
    } 
    else if (i % 5 === 0 && players >= 5) { 
     icons.push("black"); 
    } 
    else if (i % 4 === 0 && players >= 4) { 
     icons.push("gold"); 
    } 
    else if (i % 3 === 0 && players >= 3) { 
     icons.push("red"); 
    } 
    else if (i % 2 === 0 && players >= 2) { 
     icons.push("blue"); 
    } 
    else { 
     icons.push("green"); 
    } 
} 
}; 

的問題是,我得到多少藍多綠例如用:generateIcons(60,4); 如何獲得〜綠色等量藍色,紅色,金色?

+0

我知道,我可以添加5綠色,5藍色,5紅色,之後,洗牌,但我需要在正確的順序。 –

+0

你會如何得到一個綠色,藍色,紅色和金色的偶數量?總長度爲30,並將其除以4.同時發佈示例輸入中的預期結果 –

回答

0

所以,如果我正確地理解您的問題,這應該工作:

var generateIcons = function(playtime, players) { 
 
    var count = playtime/2; 
 
    icons = []; 
 
    colors = ["cyan", "violet", "orange", "black", "gold", "red", "blue", "green"]; 
 
    for (var i = 0; i < count; i++) { 
 
    \t icons.push(colors[i % players]); 
 
    } 
 
    return icons; 
 
}; 
 

 
console.log(generateIcons(60, 4));

+0

只需'icons.push(colors [i%players])'也可以。 – georg

+0

不完全相同,由此產生的陣列將開始與「紫羅蘭色」是你這樣做 –

+0

https://jsfiddle.net/v1kz3qut/ –

0

檢查,如果該解決方案滿足您:)

var generateIcons = function(playtime, players) { 
      var count = playtime/2; 
      icons = []; 
      var randomNumber; 

      for (var i = 1; i <= count; i++) { 
       randomNumber = Math.floor((Math.random() * players) + 1); //generate random number from <1, players> probability for each color should be ~equal ;) 
       if(randomNumber == 1) 
       { 
        icons.push("green"); 
       } 
       else if (randomNumber == 2) 
       { 
        icons.push("blue"); 
       } 
       else if (randomNumber == 3) 
       { 
        icons.push("red"); 
       } 
       else if (randomNumber == 4) 
       { 
        icons.push("gold"); 
       } 
       else if (randomNumber == 5) 
       { 
        icons.push("black"); 
       } 
       else if (randomNumber == 6) 
       { 
        icons.push("orange"); 
       } 
       else if (randomNumber == 7) 
       { 
        icons.push("violet"); 
       } 
       else 
       { 
        icons.push("cyan"); 
       } 

      } 

     } 

generateIcons(60,4); 

console.log(icons); 
+0

這太好了。但帕特里克的回答是完美的,因爲它(幾乎)總是平等的。如果有人不幸,你的代碼可能會打破他的心。 ;)謝謝你教我一個新的方法來做到這一點! –

+0

「生成」我總是與隨機生成相關聯。 Patrick的解決方案總是生成相同的數組。這取決於你需要什麼:D – 5ka

相關問題