Javascript 为了避免相同的结果,如何防止代码忽略条件语句?

Javascript 为了避免相同的结果,如何防止代码忽略条件语句?,javascript,Javascript,问候,所以我一直在尝试让我的藤生成器在每次运行时生成一个随机藤。我正在努力做到这一点,使最后3个给定的葡萄藤永远不会重复自己 请注意,我只想检查最后3个给定的葡萄藤,以避免 您需要更新随机数时调用扰码随机,上;作用调用随机后,上一个;您需要从函数返回 请检查代码 var vines=[ ['https://www.youtube.com/watch?v=21yI4dtAyJQ“,“一定要爱狗”], ['https://www.youtube.com/watch?v=MB1Ud95U8FE","

问候,所以我一直在尝试让我的藤生成器在每次运行时生成一个随机藤。我正在努力做到这一点,使最后3个给定的葡萄藤永远不会重复自己

请注意,我只想检查最后3个给定的葡萄藤,以避免


您需要更新随机数时调用扰码随机,上;作用调用随机后,上一个;您需要从函数返回

请检查代码

var vines=[ ['https://www.youtube.com/watch?v=21yI4dtAyJQ“,“一定要爱狗”], ['https://www.youtube.com/watch?v=MB1Ud95U8FE","不用卷尺测量某物的斗争",, ['https://www.youtube.com/watch?v=b6l63-AdU6Y“,“当车满了,但你仍试图与车队一起前进”], ['https://www.youtube.com/watch?v=19KOD8-mGm4“,”当池水太冷时…], ['https://www.youtube.com/watch?v=05Bf5vs8j9Q“,“我能要一份华夫饼吗?”, ['https://www.youtube.com/watch?v=2IekMo_DQmw“,“真理奶酪”] ]; var random=Math.floorMath.random*vines.length+0; var prev=[]; 函数编号,最后{ //console.lognumber; iFast.includeNumber{ 随机=Math.floorMath.random*vines.length+0; 随机,上一个; 回来 } iflast.length==3{ last.pop;//移除第三根藤蔓,为新藤蔓腾出空间。 } last.unshiftnumber;//注册最后一个给定的数字。 console.log`[${number+1}]${vines[number][1]}\n${vines[number][0]}` }
随机,上一个;伟大的那么你的问题是什么呢?太好了,这可能要花很长时间——吉姆·凯里——当人们使用迭代或递归来避免某些随机数时,这总是让我感到沮丧——只需从较小的范围创建一个随机数。如果我对你说,var randomDiceRoll=function{var roll=Math.floorMath.random*10000;return roll<6?roll+1:randomDiceRoll;}你会怎么说?@obsidymanage好吧,因为prev数组似乎不想存储我给它的任何值,所以它不检查在最后3个藤蔓中之前是否给出了给定的数字。所以,即使我试图阻止它,它也忽略了if语句的完整性。所以我想说,我的问题是,‘如何防止代码不这样做’@jcarpenter2,我无法理解您的代码。我理解你想说的笑话。然而,正如您可能已经注意到的,我不是一个经验丰富的javascripter,我所知道的是我自己学到的。但是你所说的关于从较小范围创建一个数字。它已经被限制在葡萄树的数量上了,但是是的,技术上我只搜索葡萄树。但这并不能帮助我知道这三种葡萄是什么。我可能知道你的初衷,但你问我对此有何看法。你不要随机数。您想洗牌现有的一组数字。谢谢,这非常有效!但是,是否有一种方法可以一次运行一次并获得相同的结果?一次调用一次函数,而不是调用相同的数组长度。是的,可以调用一次函数。如果有任何问题,请让我知道。呵呵,是的,当函数一次调用一次时,它似乎不检查以前发送的vine,并且出于某种原因,它会避免整个if语句。当您第一次调用prev数组时,它是空的
var vines = [
  ['https://www.youtube.com/watch?v=21yI4dtAyJQ', 'Gotta love dogs'],
  ['https://www.youtube.com/watch?v=MB1Ud95U8FE', 'The struggle of measuring something without measuring tape'],
  ['https://www.youtube.com/watch?v=b6l63-AdU6Y', 'When the cars full but u still tryna roll with the squad'],
  ['https://www.youtube.com/watch?v=19KOD8-mGm4', 'When the pool water is too cold..'],
  ['https://www.youtube.com/watch?v=05Bf5vs8j9Q', 'Can I please get a waffle?'],
  ['https://www.youtube.com/watch?v=2IekMo_DQmw', 'Cheese of truth']
];


var random = Math.floor((Math.random() * vines.length) + 0);
var prev = [];

function Scramble(number, last) { 

    if(last.includes(number)) {
        Scramble(random, prev);  // If the previous number matches current rerun function for a new number.
    }

    if(last.length === 3) {
        last.pop(); // Removes the 3rd vine to make room for a new one.
    }
        last.unshift(number); // Register the last given number.
        console.log(`[${number+1}] ${vines[number][1]}\n${vines[number][0]}`)
}

Scramble(random, prev);