Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试将数组中的单词随机化,并在5之后停止循环_Javascript_Arrays_Loops - Fatal编程技术网

Javascript 尝试将数组中的单词随机化,并在5之后停止循环

Javascript 尝试将数组中的单词随机化,并在5之后停止循环,javascript,arrays,loops,Javascript,Arrays,Loops,我正在尝试编写一个脚本,它将从一个名为words的数组中选择一个随机单词,并在5次之后停止循环,并将html替换为mazing。所以它总是以惊人的结尾。我想不出这种事情的最佳实践。我的想法是,我不知道把脚本放在哪里,也不知道如何正确地实现它 我觉得我需要在我的脚本中实现类似的东西,但不知道在哪里。请帮忙 if(myLoop > 15) { console.log(myLoop); $("h1").html('AMAZING.'); } else { } 下面是我用来循环

我正在尝试编写一个脚本,它将从一个名为words的数组中选择一个随机单词,并在5次之后停止循环,并将html替换为mazing。所以它总是以惊人的结尾。我想不出这种事情的最佳实践。我的想法是,我不知道把脚本放在哪里,也不知道如何正确地实现它

我觉得我需要在我的脚本中实现类似的东西,但不知道在哪里。请帮忙

if(myLoop > 15) {
    console.log(myLoop);
    $("h1").html('AMAZING.'); 
}
else {
}
下面是我用来循环和创建新单词的Javascript

$(document).ready(function(){

    words = ['respected​', 'essential', 'tactical', 'effortless', 'credible', 'smart', 'lucid', 'engaging', 'focussed', 'effective', 'clear', 'relevant', 'strategic', 'trusted', 'compelling', 'admired', 'inspiring', 'cogent', 'impactful', 'valued']

    var timer     = 2000,
        fadeSpeed =  500;

    var count = words.length;
    var position, x, myLoop;

    $("h1").html(words[rand(count)]);

    function rand(count) {
        x = position;
        position = Math.floor(Math.random() * count);
        if (position != x) {
            return position;
        } else {
            rand(count);
        }
    }

    function newWord() {
        //clearTimeout(myLoop); //clear timer

        // get new random number
        position = rand(count);


        // change tagline
        $("h1").fadeOut(fadeSpeed, function() {
            $("h1").slideDown('slow'); $(this).html(words[position]).fadeIn(fadeSpeed);        
        });

        myLoop = setTimeout(function() {newWord()}, timer);
    }

    myLoop = setTimeout(function() {newWord()}, timer);
});
这是我的密码笔


我添加了一个迭代计数器来检查它更改了多少次

通过其他变量添加此项:

var iter = 1;
newWord
函数中添加了此项:

iter = iter + 1;
if (iter > 5) {
  return;
}

var word;
if (iter == 5) {
  word = 'awesome';
}
else {
...
以下是我更改代码的解决方案:


这里有一个解决方案,它使用一个
循环和一个

使用从数组中删除单词。这样可以防止重复

我使用jQuery代替
setTimeout

vari、word、rnd、words、fadeSpeed、timer;
尊敬的​', '基本的、战术的、轻松的、可信的、聪明的、清晰的、吸引人的、专注的、有效的、清晰的、相关的、战略性的、可信的、令人信服的、令人钦佩的、鼓舞人心的、令人信服的、有影响力的、有价值的];
fadeSpeed=500;
定时器=2000;
对于(i=0;i<6;i++){
如果(i==5){
单词=‘真棒’;
}
否则{
rnd=Math.floor(Math.random()*words.length);
单词=单词[rnd];
字拼接(rnd,1);
}
(功能(字){
$('h1').fadeOut(fadeSpeed,function(){
$(this.html(word);
})
.slideDown(“慢”)
.延迟(计时器)
.fadeIn(fadeSpeed);
}
)(字);
}
h1{
文本转换:大写;
}


我认为从检查前一个世界开始,确保它们不会重复就是一个开始。在这一点上,你必须检查前一个单词。另外,“focussed”应该拼写为“focused”。只需将数组洗牌,然后将其切成4个元素,并将“mazing”作为新数组中的最后一个元素。你可以在这上面找到很多数组洗牌技术site@charlietfl我不知道如何在我的脚本中实现它。@mbomb007哈哈,谢谢你的拼写检查,我该如何进行检查?非常感谢!这也解决了重复单词的问题吗?不,它没有。这是留给读者的练习。:)读者是如何做到这一点的:?我不需要某种数据库来跟踪所有已经使用过的单词吗?我已经在你的问题下面对它发表了评论。如果我正在这样做,我会使用一个链表(而不是数组),一旦使用了这个词,就从列表中删除它。如果我感到懒惰,我会在使用后将单词设置为“”,并在显示之前检查单词是否为“”,如果是,请选择另一个。但这会给你的代码带来另一个问题,你需要从iter中减去一个。链表是更好的选择。或者,尝试将其从数组中删除。你主宰一切,伙计!如此简洁,代码行数更少。谢谢。是的,我一夜之间就想到了这一点,如何使用循环而不是从内部调用函数。很高兴看到,在我建议的改变之后,这将是一个非常好的结果。