Javascript 防止两次选择数组项

Javascript 防止两次选择数组项,javascript,Javascript,如何防止从for循环中的数组中选择两次数字?在这种情况下,我希望确保pictureNo每次都是唯一的 $(document).ready(function () { // Generate timeline items var timelineItemCount = Math.floor(Math.random() * 9) + 1; for(i=0;i<timelineItemCount;i++) {

如何防止从for循环中的数组中选择两次数字?在这种情况下,我希望确保pictureNo每次都是唯一的

$(document).ready(function () {
        // Generate timeline items
        var timelineItemCount = Math.floor(Math.random() * 9) + 1;
        for(i=0;i<timelineItemCount;i++)
        {
            generateTimeline();
        }
    });

function generateTimeline() {
    // Select gender
    var genderArray = ['male','female'];
    var gender = genderArray[Math.floor(Math.random()*genderArray.length)]; 

    // Select profile picture - how do I prevent the same number from being selected once here
    var pictureNo = Math.floor(Math.random() * 19) + 1;

    // Create timeline entry    
    $('#home-page').append($('<div class="timeline-item"><img src="assets/img/' + gender + '_profile' + pictureNo + '.jpg" alt="" class="img-rounded profile"></div>'));    
}
$(文档).ready(函数(){
//生成时间线项目
var timelineItemCount=Math.floor(Math.random()*9)+1;

对于(i=0;i尝试并存储随机选择的数字,因此每次随机选择一个新数字时,您都有一个条件将其与以前选择的数字进行比较。如果以前选择了该数字,则应选择一个新的随机数字。

尝试并存储随机选择的数字,以便每次都有一个新数字r是随机选择的。您有一个条件将其与以前选择的数字进行比较。如果该数字是以前选择的,则应选择一个新的随机数字。

尝试存储随机选择的数字,以便每次随机选择一个新数字时,您都有一个条件将其与h先前选择的数字。如果先前选择了该数字,则应选择一个新的随机数字。

尝试并存储随机选择的数字,以便每次随机选择一个新数字时,您都有一个条件
将其与先前选择的数字进行比较。如果先前选择了该数字,则应选择一个新的随机数。

在for循环外创建一个数组,并存储生成的随机数。 在for循环的每次迭代中,检查新的随机数是否属于数组。
for循环完成后,将数组重置为空数组。

在for循环外创建一个数组,并存储生成的随机数。 在for循环的每次迭代中,检查新的随机数是否属于数组。
for循环完成后,将数组重置为空数组。

在for循环外创建一个数组,并存储生成的随机数。 在for循环的每次迭代中,检查新的随机数是否属于数组。
for循环完成后,将数组重置为空数组。

在for循环外创建一个数组,并存储生成的随机数。 在for循环的每次迭代中,检查新的随机数是否属于数组。 for循环完成后,将阵列重置为空阵列。

尝试以下操作:-

$(document).ready(function () {
        // Generate timeline items
        var timelineItemCount = Math.floor(Math.random() * 9) + 1.
            selectedPicObj={};
        for(i=0;i<timelineItemCount;i++)
        {
            generateTimeline(selectedPicObj);
        }
    });

    function generateTimeline(selectedPicObj) {
    // Select gender
    var genderArray = ['male','female'], i=0;
    var gender = genderArray[Math.floor(Math.random()*genderArray.length)]; 

    // Select profile picture - how do I prevent the same number from being selected once here
    var pictureNo = Math.floor(Math.random() * 19) + 1;
        for(;i<19;i++){
            if(!selectedPicObj[pictureNo]){
                selectedPicObj[pictureNo] = true;
                break;
            }else{
                pictureNo++;
                if(pictureNo === 19){
                    pictureNo = 0;
                }
            }
        }
    // Create timeline entry    
    $('#home-page').append($('<div class="timeline-item"><img src="assets/img/' + gender + '_profile' + pictureNo + '.jpg" alt="" class="img-rounded profile"></div>'));    
}
$(文档).ready(函数(){
//生成时间线项目
var timelineItemCount=Math.floor(Math.random()*9)+1。
selectedPicObj={};
对于(i=0;i试试这个:-

$(document).ready(function () {
        // Generate timeline items
        var timelineItemCount = Math.floor(Math.random() * 9) + 1.
            selectedPicObj={};
        for(i=0;i<timelineItemCount;i++)
        {
            generateTimeline(selectedPicObj);
        }
    });

    function generateTimeline(selectedPicObj) {
    // Select gender
    var genderArray = ['male','female'], i=0;
    var gender = genderArray[Math.floor(Math.random()*genderArray.length)]; 

    // Select profile picture - how do I prevent the same number from being selected once here
    var pictureNo = Math.floor(Math.random() * 19) + 1;
        for(;i<19;i++){
            if(!selectedPicObj[pictureNo]){
                selectedPicObj[pictureNo] = true;
                break;
            }else{
                pictureNo++;
                if(pictureNo === 19){
                    pictureNo = 0;
                }
            }
        }
    // Create timeline entry    
    $('#home-page').append($('<div class="timeline-item"><img src="assets/img/' + gender + '_profile' + pictureNo + '.jpg" alt="" class="img-rounded profile"></div>'));    
}
$(文档).ready(函数(){
//生成时间线项目
var timelineItemCount=Math.floor(Math.random()*9)+1。
selectedPicObj={};
对于(i=0;i试试这个:-

$(document).ready(function () {
        // Generate timeline items
        var timelineItemCount = Math.floor(Math.random() * 9) + 1.
            selectedPicObj={};
        for(i=0;i<timelineItemCount;i++)
        {
            generateTimeline(selectedPicObj);
        }
    });

    function generateTimeline(selectedPicObj) {
    // Select gender
    var genderArray = ['male','female'], i=0;
    var gender = genderArray[Math.floor(Math.random()*genderArray.length)]; 

    // Select profile picture - how do I prevent the same number from being selected once here
    var pictureNo = Math.floor(Math.random() * 19) + 1;
        for(;i<19;i++){
            if(!selectedPicObj[pictureNo]){
                selectedPicObj[pictureNo] = true;
                break;
            }else{
                pictureNo++;
                if(pictureNo === 19){
                    pictureNo = 0;
                }
            }
        }
    // Create timeline entry    
    $('#home-page').append($('<div class="timeline-item"><img src="assets/img/' + gender + '_profile' + pictureNo + '.jpg" alt="" class="img-rounded profile"></div>'));    
}
$(文档).ready(函数(){
//生成时间线项目
var timelineItemCount=Math.floor(Math.random()*9)+1。
selectedPicObj={};
对于(i=0;i试试这个:-

$(document).ready(function () {
        // Generate timeline items
        var timelineItemCount = Math.floor(Math.random() * 9) + 1.
            selectedPicObj={};
        for(i=0;i<timelineItemCount;i++)
        {
            generateTimeline(selectedPicObj);
        }
    });

    function generateTimeline(selectedPicObj) {
    // Select gender
    var genderArray = ['male','female'], i=0;
    var gender = genderArray[Math.floor(Math.random()*genderArray.length)]; 

    // Select profile picture - how do I prevent the same number from being selected once here
    var pictureNo = Math.floor(Math.random() * 19) + 1;
        for(;i<19;i++){
            if(!selectedPicObj[pictureNo]){
                selectedPicObj[pictureNo] = true;
                break;
            }else{
                pictureNo++;
                if(pictureNo === 19){
                    pictureNo = 0;
                }
            }
        }
    // Create timeline entry    
    $('#home-page').append($('<div class="timeline-item"><img src="assets/img/' + gender + '_profile' + pictureNo + '.jpg" alt="" class="img-rounded profile"></div>'));    
}
$(文档).ready(函数(){
//生成时间线项目
var timelineItemCount=Math.floor(Math.random()*9)+1。
selectedPicObj={};

对于(i=0;i让我们定义两个男性和女性索引数组,genders数组,将它们洗牌并弹出一些项目。使用下划线.JS很容易,例如:

var malesCount = 20;
var femalesCount = 20;

var profiles = {
  'male' : _.shuffle(_.range(1, malesCount + 1)),
  'female' : _.shuffle(_.range(1, femalesCount + 1)),
};

var genders = [];
for (var index = 0; index < malesCount; index++) {
  genders.push('male');
}
for (var index = 0; index < femalesCount; index++) {
  genders.push('female');
}
genders = _.shuffle(genders);

var gender;
var pictureNo;
var src;
while (gender = genders.pop()) {
  pictureNo = profiles[gender].pop();
  src = 'assets/img/' + gender + '_profile' + pictureNo + '.jpg';
  console.log(src);
}
var malesunt=20;
var femalesCount=20;
变量配置文件={
“男性”:洗牌(0.range(1,malesunt+1)),
'female':u.shuffle(u.range(1,femalesCount+1)),
};
变量性别=[];
对于(var指数=0;指数

我已经对50K的男性和50K的女性测试了这个解决方案,它只在115毫秒内执行。

让我们定义两个男性和女性索引数组,genders数组,将它们洗牌并弹出一些项目。使用下划线.JS很容易,例如:

var malesCount = 20;
var femalesCount = 20;

var profiles = {
  'male' : _.shuffle(_.range(1, malesCount + 1)),
  'female' : _.shuffle(_.range(1, femalesCount + 1)),
};

var genders = [];
for (var index = 0; index < malesCount; index++) {
  genders.push('male');
}
for (var index = 0; index < femalesCount; index++) {
  genders.push('female');
}
genders = _.shuffle(genders);

var gender;
var pictureNo;
var src;
while (gender = genders.pop()) {
  pictureNo = profiles[gender].pop();
  src = 'assets/img/' + gender + '_profile' + pictureNo + '.jpg';
  console.log(src);
}
var malesunt=20;
var femalesCount=20;
变量配置文件={
“男性”:洗牌(0.range(1,malesunt+1)),
'female':u.shuffle(u.range(1,femalesCount+1)),
};
变量性别=[];
对于(var指数=0;指数

我已经对50K的男性和50K的女性测试了这个解决方案,它只在115毫秒内执行。

让我们定义两个男性和女性索引数组,genders数组,将它们洗牌并弹出一些项目。使用下划线.JS很容易,例如:

var malesCount = 20;
var femalesCount = 20;

var profiles = {
  'male' : _.shuffle(_.range(1, malesCount + 1)),
  'female' : _.shuffle(_.range(1, femalesCount + 1)),
};

var genders = [];
for (var index = 0; index < malesCount; index++) {
  genders.push('male');
}
for (var index = 0; index < femalesCount; index++) {
  genders.push('female');
}
genders = _.shuffle(genders);

var gender;
var pictureNo;
var src;
while (gender = genders.pop()) {
  pictureNo = profiles[gender].pop();
  src = 'assets/img/' + gender + '_profile' + pictureNo + '.jpg';
  console.log(src);
}
var malesunt=20;
var femalesCount=20;
变量配置文件={
“男性”:洗牌(0.range(1,malesunt+1)),
'female':u.shuffle(u.range(1,femalesCount+1)),
};
变量性别=[];
对于(var指数=0;指数

我已经对50K的男性和50K的女性测试了这个解决方案,它只在115毫秒内执行。

让我们定义两个男性和女性索引数组,genders数组,将它们洗牌并弹出一些项目。使用下划线.JS很容易,例如:

var malesCount = 20;
var femalesCount = 20;

var profiles = {
  'male' : _.shuffle(_.range(1, malesCount + 1)),
  'female' : _.shuffle(_.range(1, femalesCount + 1)),
};

var genders = [];
for (var index = 0; index < malesCount; index++) {
  genders.push('male');
}
for (var index = 0; index < femalesCount; index++) {
  genders.push('female');
}
genders = _.shuffle(genders);

var gender;
var pictureNo;
var src;
while (gender = genders.pop()) {
  pictureNo = profiles[gender].pop();
  src = 'assets/img/' + gender + '_profile' + pictureNo + '.jpg';
  console.log(src);
}
var malesunt=20;
var femalesCount=20;
变量配置文件={
“男”:洗牌