[removed] randomly pair items from array without repeats

前端 未结 5 2126
执笔经年
执笔经年 2021-01-05 09:03

I am trying to make a very basic \"secret santa\" generator as one of my first Javascript projects. I have searched for hours for a solution to this problem but so far noth

5条回答
  •  春和景丽
    2021-01-05 09:40

    I'm a tad late, but thought I'd throw my answer in here. It essentially does the same thing @adeneo's does, but it uses the same basic code as OP:

    var names = ["Sean","Kyle","Emily","Nick","Cotter","Brian","Jeremy","Kimmy","Pat","Johnny"];
        pickpool = names.slice(0); // Slice the array at the first element to copy it by value
    
    var used = [];
    var picks = [];
    
    if (names.length % 2 != 0) {
        alert("You must have an even number of names. You currently have " + names.length + " names.");
    }
    
    for( var i = 0; i < names.length; i++){
    
        var random = Math.floor(Math.random()*pickpool.length)
    
        if(names[random] == names[i]) {
            // names[random] = names[random++];
            picks.push(names[i] + " gets " + pickpool[random++]);
            pickpool.splice(random++,1);
        } else {
            picks.push(names[i] + " gets " + pickpool[random]);
            pickpool.splice(random,1);
        }
    }
    console.log("picked array: ");
    for(var k=0; k

    http://jsfiddle.net/SNJpC/

提交回复
热议问题