在数组中循环并在到达结束时返回到开头

时间:2018-02-13 16:30:40

标签: javascript arrays

我有一个简单的数组

var answerAttribute = ['A','B','C','D'];

我有16个列表项,我想要完成的是循环遍历列表的长度,无论是列表2项还是300项。我希望有一个与之关联的数据属性A, B,C或D.

以下是我正在使用的内容:

var questionOption = '';
for(var i = 0; i < quizContent.length; i++) {
    questionOption = answerAttribute[i % answerAttribute.length];
    console.log(questionOption);
}

当将其记录到控制台时,它会记录A,AB,ABC,ABCD,ABCDundefined,并不断重复未定义,直到它到达循环结束。我的问题是我做错了什么,所以每个循环只记录一个字母。

4 个答案:

答案 0 :(得分:2)

questionOption += answerAttribute[i]

此声明是questionOption = questionOption + answerAttribute[i]的简短形式。它会在循环的每次迭代中将下一个元素追加到questionOption

看起来你想要的可能是questionOption = answerAttribute[i]。这会将questionOption中的值替换为新元素,而不是附加它。

答案 1 :(得分:1)

您只需记录当前值,如下所示:

var questionOption = '';
for (var i = 0; i < quizContent.length; i++) {
    //what is questionOption used for?
    questionOption += answerAttribute[i];
    console.log(answerAttribute[i]);
}

或者如果您希望questionOption引用当前值

questionOption = answerAttribute[i];
console.log(questionOption );

答案 2 :(得分:1)

您正在循环The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[AVASupplierPortal.Models.PurchaseOrder]', but this dictionary requires a model item of type 'AVASupplierPortal.Models.PurchaseOrder'. 索引并将它们应用于quizContent数组。我相信你想要的是一个嵌套循环......

answerAttribute

答案 3 :(得分:0)

不知何故,我怀疑问题实际上是关于日志记录,实际上是关于结果字符串。

无论哪种方式,我都会在没有循环的情况下这样做。

var answerAttribute = ['A','B','C','D'];

var quizContent = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];

var questionOption = answerAttribute
     .join("")
     .repeat(Math.ceil(quizContent.length / answerAttribute.length))
     .slice(0, quizContent.length);
     
console.log(questionOption);

它只是将answerAttribute加入到一个字符串中,并重复该字符串answerAttribute长度可以分为quizContent.length(向上舍入)的次数。< / p>

然后将最终字符串调整为quizContent的大小,以从舍入中删除任何额外内容。

请注意,此方法假定每个属性使用一个字符。如果不是单一的,但它们的长度都相同,可以调整为仍然有效。