从数组中快速打印对象,然后循环

Rapidly print objects from array, then cycle

本文关键字:对象 然后 循环 打印 数组      更新时间:2024-05-11

我是JavaScript的新手,但有其他编程语言的经验。

我很难用JavaScript设计一个简单的任务:

给定一个字母数组,我想随机选择9个字母,这些字母将一个接一个地快速打印。然后,我想显示两个随机字母,用户将从左或右选择(以选择列表中最近出现的字母)。选择后,再随机抽取9个字母。

我不知道如何让这些字母快速打印出来,而不是全部打印在一起。。。?我还希望这个能运行10次。有没有办法用jQuery做到这一点?

这就是我目前所拥有的:

var stimuli = new Array('B','C', 'D', 'F', 'G', 'H')
var num_trials = 10; 
function trials() {
    while (num_trials > 1) {
        //fills array with random letters
        var random = new Array()
        for (var i = 0; i < 9; i++) {
            //randomly picks 9 
            random[i] =  stimuli[Math.floor(Math.random() * stimuli.length)]
        }
        //from "random" array,displays stimuli
        for (var i = 0; i < random.length; i++) {
            document.write(random[i]);
        }
        document.write("<br>");
        //randomly picks two letters from random array to display
        document.write(random[Math.floor(Math.random() * random.length)]+ " , ")
        document.write(random[Math.floor(Math.random() * random.length)])

        //user selects, left, right or up
        num_trails--; 

    }
}

要逐个打印字母,必须使用setIntervalsetTimeout。我会使用setInterval,将您当前的for循环替换为:

var i = 0;
var printer = window.setInterval(function(){
  if (i < random.length) {
    document.write(random[i]);
  } else {
    window.clearInterval(printer);
    /* Here goes the rest of your code after the for loop, eg.
    document.write("<br>");
    document.write(random[Math.floor(Math.random() * random.length)]+ " , ");
   etc. */
    return;
  }
  i++;
}, 300);

上面的代码应该依次打印每个字母。

i >= random.length时,它将在for循环(for循环已退出)之后运行所有其他代码。