Javascript 从数组中选择3个随机元素。而不是两次得到相同的元素
我试图让这个函数打印出三个随机名称,而不使用相同的名称两次。我开始尝试在for循环中使用If,但不知道这是否正确。感谢所有帮助,因为我觉得在学习Javascript的这一点上有点卡住了Javascript 从数组中选择3个随机元素。而不是两次得到相同的元素,javascript,Javascript,我试图让这个函数打印出三个随机名称,而不使用相同的名称两次。我开始尝试在for循环中使用If,但不知道这是否正确。感谢所有帮助,因为我觉得在学习Javascript的这一点上有点卡住了 var name = ["Kai", "Lars", "Anders", "Ole", "Petter", "Mikael", "Cos", "Sin"]; var randName = []; function randomNavn(){ document.getElementBy
var name = ["Kai", "Lars", "Anders", "Ole", "Petter", "Mikael", "Cos", "Sin"];
var randName = [];
function randomNavn(){
document.getElementById("utskrift").innerHTML = "";
for( i = 0; i < 3; i++){
randName.push(name.splice(Math.floor(Math.random() * name.length), 1));
if(name[i] === randName[i]){
}
}
document.getElementById("utskrift").innerHTML = randName.join(" , ");
}
var name=[“Kai”、“Lars”、“Anders”、“Ole”、“Petter”、“Mikael”、“Cos”、“Sin”];
var randName=[];
函数randomNavn(){
document.getElementById(“utskrift”).innerHTML=“”;
对于(i=0;i<3;i++){
push(name.splice(Math.floor(Math.random()*name.length),1));
如果(名称[i]==randName[i]){
}
}
document.getElementById(“utskrift”).innerHTML=randName.join(“,”);
}
我建议使用与名称不同的变量名称,因为它是window对象的受保护属性
函数randomNavn(){
document.getElementById(“utskrift”).innerHTML=“”;
对于(i=0;i<3;i++){
push(nname.splice(Math.floor(Math.random()*nname.length),1));
}
document.getElementById(“utskrift”).innerHTML=randName.join(“,”);
}
var nname=[“Kai”、“Lars”、“Anders”、“Ole”、“Petter”、“Mikael”、“Cos”、“Sin”],
randName=[];
randomNavn()代码>
对于您来说,这将是
var name = ["Kai", "Lars", "Anders", "Ole", "Petter", "Mikael", "Cos", "Sin"];
var randName = [];
function randomNavn(){
document.getElementById("utskrift").innerHTML = "";
for( i = 0; i < 3; i++){
randName.push(name.splice(Math.floor(Math.random() * name.length), 1));
if(name[i] === randName[i]){
i-- // yay, that's all!
}
}
document.getElementById("utskrift").innerHTML = randName.join(" , ");
}
您可以使用do..while
循环。另请注意[0]
在.splice()
的结尾处返回数组的值,而不是数组
var name=[“Kai”、“Lars”、“Anders”、“Ole”
“,”彼特“,”米凯尔“,”科斯“,”罪恶“];
var randName=[];
做{
randName[randName.length]=names.splice(
Math.floor(Math.random()*names.length)
, 1)[0];
}而(randName.length<3);
console.log(randName)代码>问题“是否正确”?试试看,如果不行,就用你的问题贴一个问题。
var i1 = Math.floor(Math.random() * name.length);
var i2 = Math.floor(Math.random() * (name.length-1));
if (i2 >= i1) i2++;
var i2 = Math.floor(Math.random() * (name.length-2));
if (i3 >= i2) i3++;
if (i3 >= i1) i3++;