2017-06-15 85 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