Javascript 如何为对象随机指定特定颜色?

Javascript 如何为对象随机指定特定颜色?,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,我有6个方块,我想给它们分配6种已经定义好的颜色,但是是随机的。所以一个方块应该有一种颜色,每次我点击“再次播放”,他们应该随机混合。到目前为止,我已经设法使所有的方块使用六种颜色中的一种,但由于他们只是随机选择它们,所以我经常使用例如3种灰色,但0种红色。 我不知道如何更好地解释这一点,所以如果你有任何问题,我很乐意回答 HTML: JS: var squares=$(“.squares”); 变量颜色={ “黄色”:“rgb(255,255,0)”, “橙色”:“rgb(255153,0

我有6个方块,我想给它们分配6种已经定义好的颜色,但是是随机的。所以一个方块应该有一种颜色,每次我点击“再次播放”,他们应该随机混合。到目前为止,我已经设法使所有的方块使用六种颜色中的一种,但由于他们只是随机选择它们,所以我经常使用例如3种灰色,但0种红色。 我不知道如何更好地解释这一点,所以如果你有任何问题,我很乐意回答

HTML:


JS:

var squares=$(“.squares”);
变量颜色={
“黄色”:“rgb(255,255,0)”,
“橙色”:“rgb(255153,0)”,
“绿色”:“rgb(0,255,0)”,
“蓝色”:“rgb(0,0,255)”,
“灰色”:“rgb(128128128)”,
'紫色':'rgb(153,0255)'
};
对于(变量i=0;i
您可以从洗牌结果中分配它们:

var array = Object.keys(colors);
shuffleArray(array);
for(var i=0; i < squares.length; i++){
    squares[i].style.backgroundColor = colors[array[i]];
    squares[i].style.display = "block";
}
var数组=Object.key(颜色);
沙狐耳环(阵列);
对于(变量i=0;i
如果您不想走这条路线,可以将它们放入数组中,然后从中随机选择颜色,删除每次选择的颜色:

var array = Object.keys(colors);
for(var i=0; i < squares.length; i++){
    var index = Math.floor(Math.random() * array.length);
    var color = array[index];
    array.splice(index, 1); // Remove that entry
    squares[i].style.backgroundColor = colors[color];
    squares[i].style.display = "block";
}
var数组=Object.key(颜色);
对于(变量i=0;i
您的颜色数组,然后按顺序分配?您应该对概率进行加权,以便较少的数字有更大的概率被绘制。或使用
delete
var array = Object.keys(colors);
shuffleArray(array);
for(var i=0; i < squares.length; i++){
    squares[i].style.backgroundColor = colors[array[i]];
    squares[i].style.display = "block";
}
var array = Object.keys(colors);
for(var i=0; i < squares.length; i++){
    var index = Math.floor(Math.random() * array.length);
    var color = array[index];
    array.splice(index, 1); // Remove that entry
    squares[i].style.backgroundColor = colors[color];
    squares[i].style.display = "block";
}