2017-06-15 101 views
0

我有一个名为'questions'的数组,我有一个与它关联的对象变量,它也是一个名为'choices'的数组。数组对象

var questions = [ 
{ 
question: "What type of business do you run?", 
choices: ['Business to Business - Provide products and/or services to other 
     businesses', 'Business to Business to Consumer - Provide products 
     and/or services to other businesses for consumers', 
     'Business to Consumer - Provide products and/or services to 
     consumers'], 
choiceValues: [1, 2, 3], 
} 

我想在for循环中使用“选择”的长度,如下所示。这句法正确吗?我似乎无法增加“点数”变量。

function displayScore() 
{ 
var score = $('<p>',{id: 'question'}); 
var points = 0; 
for (var i = 0; i < selections.length; i++) 
{ 
    for (var j = 0; j < questions[i].choices.length; j++) 
    { 
     if (selections[i] === questions[i].choices[j]) 
     { 
      points = points + questions[i].choiceValues[j]; 
     } 
    } 
} 
score.append('You got ' + points + ' points!'); 
return score; 
} 

'选择'的一个例子是:[0,4,0,1,0,1,0,1]。

+0

你已经验证了什么'的问题[I] .choices [j]'是?它与您所期望的相符吗?另外,什么是“选择”? – Carcigenicate

+0

@Carcigenicate'selections'是一个包含用户对问题的答案的数组。我使用inner for循环来检查他们的答案匹配列表中哪个答案。根据匹配的答案,分配一定数量的点,由'choiceValues'定义。 –

+0

提供'选择'的示例 – luisenrike

回答

0

的问题是,selections[i]number(0)questions[i].choices[j]string('Business to Business - Provide products and/or services to other businesses'),所以,if (selections[i] === questions[i].choices[j])将无法​​正常工作(总是false)。

可以代替检查选择的指标:

if (selections[i] === j) 
{ 
    points = points + questions[i].choiceValues[j]; 
} 

而且,内for是没用的,你可以这样做:

function displayScore() 
{ 
    var score = $('<p>',{id: 'question'}); 
    var points = 0; 
    for (var i = 0; i < selections.length; i++) { 
     points += questions[i].choiceValues[selections[i]]; 
    } 
    score.append('You got ' + points + ' points!'); 
    return score; 
} 
+0

非常感谢,工作。 –

+0

乐于帮忙,欢迎来到Stack Overflow。如果此答案或任何其他人解决了您的问题,请将其标记为已接受。 – luisenrike