Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让阵列选择四种不同的选项_Javascript_Arrays_Random - Fatal编程技术网

Javascript 如何让阵列选择四种不同的选项

Javascript 如何让阵列选择四种不同的选项,javascript,arrays,random,Javascript,Arrays,Random,有人知道如何让我的数组在不同的变量下选择四个不同的选项吗?现在,我有一个包含六个实体的数组和一个选择其中四个选项并为其分配变量的函数,但有可能会重复 var colors = ['#4286f4', '#e2f442', '#f48c41', '#41f4f4', '#dd3b3b', '#7a6f6f'] window.colorOne = ''; window.colorTwo = ''; window.colorThree = ''; window.colorFour = ''; fu

有人知道如何让我的数组在不同的变量下选择四个不同的选项吗?现在,我有一个包含六个实体的数组和一个选择其中四个选项并为其分配变量的函数,但有可能会重复

var colors = ['#4286f4', '#e2f442', '#f48c41', '#41f4f4', '#dd3b3b', '#7a6f6f']
window.colorOne = '';
window.colorTwo = '';
window.colorThree = '';
window.colorFour = '';


function beginAndGetCombo(){

window.colorOne = colors[Math.floor(Math.random() * colors.length)];
window.colorTwo = colors[Math.floor(Math.random() * colors.length)];
window.colorThree = colors[Math.floor(Math.random() * colors.length)];
window.colorFour = colors[Math.floor(Math.random() * colors.length)];

}


<input type=button value='Get Colors' onclick='beginAndGetCombo()'>
var colors=['#4286f4'、'#e2f442'、'#f48c41'、'#41f4f4'、'#DD3B3B3B'、'#7a6f6f']
window.colorOne='';
window.colorTwo='';
window.colorThree='';
window.colorFour='';
函数beginAndGetCombo(){
window.colorOne=colors[Math.floor(Math.random()*colors.length)];
window.colorTwo=colors[Math.floor(Math.random()*colors.length)];
window.colortree=colors[Math.floor(Math.random()*colors.length)];
window.colorFour=colors[Math.floor(Math.random()*colors.length)];
}
这里有一种可能的方法,用于从可能的颜色数组中删除所选元素。数组在每次迭代中都会改变长度,随机变化的边界也会改变。然后每次迭代我们选择的颜色就更少了

var colors=['#4286f4'、'#e2f442'、'#f48c41'、'#41f4f4'、'#DD3B3B3B'、'#7a6f6f']
var newcolors={“colorOne”:“”、“colorTwo”:“”、“colorThree”:“”、“colorFour”:“”};
for(让颜色以新颜色显示){
位置=Math.floor(Math.random()*colors.length-1);
窗口[颜色]=颜色。拼接(位置,1)[0];
}
console.log(window.colorOne)
console.log(window.colorTwo)
console.log(window.colorThree)

console.log(window.colorFour)
这对您来说是一个硬编码的解决方案。我创建了一个助手数组来存储选定的颜色,并创建了一个过滤数组来进行选择。过滤后的数组是从原始颜色数组构造的,不包括已选择的颜色。 在函数的末尾,我将它们分配给window.colorX变量。 希望能有帮助

const colors=[“#4286f4”、“#e2f442”、“#f48c41”、“#41f4f4”、“#DD3B3B3B”、“#7a6f6f”];
window.colorOne='';
window.colorTwo='';
window.colorThree='';
window.colorFour='';
函数beginAndGetCombo(){
让选定的=[];
for(设i=0;i<4;i++){
让filteredColors=colors.filter(color=>!selected.includes(color))
console.log(过滤颜色);
selected.push(filteredColors[Math.floor(Math.random()*filteredColors.length)])
}
[window.colorOne、window.colorTwo、window.colorTwo、window.colorTwo、window.colorFour]=选中;

}
正如其他人所建议的,洗牌数组是最简单、最简单的方法

var colors=['#4286f4'、'#e2f442'、'#f48c41'、'#41f4f4'、'#DD3B3B3B'、'#7a6f6f'];
变量随机化=(函数(len){
返回函数(){
返回Math.floor(Math.random()*len);
};
})(颜色、长度);
var shuffled=colors.sort(随机化);
变量名称=['1','2','3','4'];
颜色变异;
while(name.length){
color='color'+names.shift();
window[color]=shuffled.shift();
console.log(颜色,窗口[颜色]);
}
var colors=['#4286f4'、'#e2f442'、'#f48c41'、'#41f4f4'、'#DD3B3B3B'、'#7a6f6f']
var colorOne='';
var colorTwo='';
var colorThree='';
var colorFour='';
var newColor='';
var newColors=新数组();
函数beginAndGetCombo(){
newColor=colors[Math.floor(Math.random()*colors.length)];
if(newColors.indexOf(newColor)=-1){
newColors.push(newColor);
};
if(newColors.length!=4){
beginadgestcombo();
返回;
};
colorOne=新颜色[0];
colorTwo=新颜色[1];
colorThree=新颜色[2];
colorFour=新颜色[3];
console.log(colorOne);
console.log(colorTwo);
console.log(colorThree);
console.log(colorFour);
newColors=新数组();
}

beginadgestcombo()为什么不选择一个随机值,然后将其从值列表中删除,然后从剩余列表中选择下一个?或者,每次洗牌列表并从开头弹出值?可能重复