2017-04-02 184 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

相关问题