Javascript 从数组中选择3个随机元素。而不是两次得到相同的元素

Javascript 从数组中选择3个随机元素。而不是两次得到相同的元素,javascript,Javascript,我试图让这个函数打印出三个随机名称,而不使用相同的名称两次。我开始尝试在for循环中使用If,但不知道这是否正确。感谢所有帮助,因为我觉得在学习Javascript的这一点上有点卡住了 var name = ["Kai", "Lars", "Anders", "Ole", "Petter", "Mikael", "Cos", "Sin"]; var randName = []; function randomNavn(){ document.getElementBy

我试图让这个函数打印出三个随机名称,而不使用相同的名称两次。我开始尝试在for循环中使用If,但不知道这是否正确。感谢所有帮助,因为我觉得在学习Javascript的这一点上有点卡住了

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++;