我是一个新手程序员,并为复杂的问题提前道歉。在For-Loop中创建一个计数器?
我试图为实验研究创建一个词汇决策任务,在这个任务中,受访者必须决定屏幕上显示的一系列字母是否产生“单词”或“不是一个单词”。除了我想从一个单独的输入文件(input.txt)为80个试验中的每一个随机选择一个字(类别A)或非字(类别B)的位之外,一切工作都很合理。随机化工作,但每个列表(类别A或B)中的一些元素会被跳过,因为我使用了“round.catIndex = j;”其中“j”是每个连续试验的循环。由于一些试验从A类和B类中随机选择,因此“j”不会在每个类别的列表中依次移动。相反,类别A列表中的元素可以从1,2,5,8,9,10等等中选择(每次因随机化而变化)。为了长话短说(!),我该如何创建一个计数器,以便在每个试验的for循环中工作,以便分别使用A类和B类的每个单词和非单词将用于词汇决策任务?到目前为止我尝试过的所有东西都无法正常工作,或完全打破了JavaScript。
下面是我的代码片段,完整的代码在http://50.17.194.59/LDT/trunk/LDT.js。此外,完整的词汇决策任务可以在http://50.17.194.59/LDT/trunk/LDT.php访问。谢谢!
function initRounds()
{
numlst = [];
for (var k = 0; k<numrounds; k++)
{
if (k % 2 == 0) numlst[k] = 0;
else numlst[k] = 1;
}
numlst.sort(function() {return 0.5 - Math.random()})
for (var j = 0; j<numrounds; j++)
{
var round = new LDTround();
if (numlst[j] == 0)
{
round.category = input.catA.datalabel;
}
else if (numlst[j] == 1)
{
round.category = input.catB.datalabel;
}
// pick a category & stimulus
if (round.category == input.catA.datalabel)
{
round.itemtype = input.catA.itemtype;
round.correct = 1;
round.catIndex = j;
}
else if (round.category == input.catB.datalabel)
{
round.itemtype = input.catB.itemtype;
round.correct = 2;
round.catIndex = j;
}
roundArray[i].push(round);
}
return roundArray;
}
非常感谢您的详细评论。正如你猜测的那样,你的后一个建议更符合我想做的事情(我只是不知道该怎么做)。如果你可以发布一个例子,我应该(希望)能够弄清楚如何将它添加到我的程序中。再次感谢! – 2012-03-21 02:25:05
嘿,我昨天晚上回答你的时候睡觉了。我已经编辑了如何解决这个问题。 – 2012-03-21 16:12:38
啊,真的很酷。你的解释有助于我理解如何解决这个问题(最后!)。我会让你知道它是怎么回事...... – 2012-03-22 04:06:46