Javascript 尝试将数组中的单词随机化,并在5之后停止循环
我正在尝试编写一个脚本,它将从一个名为words的数组中选择一个随机单词,并在5次之后停止循环,并将html替换为mazing。所以它总是以惊人的结尾。我想不出这种事情的最佳实践。我的想法是,我不知道把脚本放在哪里,也不知道如何正确地实现它 我觉得我需要在我的脚本中实现类似的东西,但不知道在哪里。请帮忙Javascript 尝试将数组中的单词随机化,并在5之后停止循环,javascript,arrays,loops,Javascript,Arrays,Loops,我正在尝试编写一个脚本,它将从一个名为words的数组中选择一个随机单词,并在5次之后停止循环,并将html替换为mazing。所以它总是以惊人的结尾。我想不出这种事情的最佳实践。我的想法是,我不知道把脚本放在哪里,也不知道如何正确地实现它 我觉得我需要在我的脚本中实现类似的东西,但不知道在哪里。请帮忙 if(myLoop > 15) { console.log(myLoop); $("h1").html('AMAZING.'); } else { } 下面是我用来循环
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中减去一个。链表是更好的选择。或者,尝试将其从数组中删除。你主宰一切,伙计!如此简洁,代码行数更少。谢谢。是的,我一夜之间就想到了这一点,如何使用循环而不是从内部调用函数。很高兴看到,在我建议的改变之后,这将是一个非常好的结果。