var Question = function(question, answer, correctAnswer) {
this.question = question;
this.answer = answer;
this.correctAnswer = correctAnswer;
}
var quesArray = new Array();
quesArray.push(new Question('Is java script instresting?', ['yes', 'no', 'TBD'], 0));
quesArray.push(new Question('Who is the course teacher?', ['Mark', 'Jane', 'Jonas'], 3));
quesArray.push(new Question('What do u thing about codding? ', ['Fedup', 'Interesting', 'Okay'], 2));
function iterate(answer) {
for (var i = 0; i < answer.length; i++) {
console.log(answer[i]);
}
}
function randQuestion() {
var rand = 1 + Math.floor(Math.random()) * 2;
var ques = quesArray[rand];
console.log(ques.question + '\n' + iterate(ques.answer));
}
randQuestion();
输出:-
标记
简
乔纳斯脚本
谁是课程老师?
未定义
我认为应该是什么?
谁是课程老师?
标记
简
乔纳斯脚本
答案 0 :(得分:2)
stdin
未返回任何内容。如果您想在
iterate
那么您应该让console.log(ques.question + '\n' + iterate(ques.answer));
返回一个字符串,可能是iterate
到join
数组中。
另一个问题是answer
将始终等于rand
。如果您要实际上个随机问题,请使用1
:
Math.floor(Math.random() * 3)
答案 1 :(得分:1)
console.log(ques.question + '\n' + iterate(ques.answer));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this gets evaluated first
在函数调用中,总是在调用函数之前对参数求值,否则如何传递参数?
ques.question + '\n' + iterate(ques.answer)
首先得到评估,然后调用console.log
。
由于iterate
不返回任何内容,因此假设为undefined
,因此ques.question + '\n' + iterate(ques.answer)
的值为"some question\nundefined"
。
更改iterate
,使其返回答案而不是记录答案:
function iterate(answer) {
var answersText = "";
for (var i = 0; i < answer.length; i++) {
answersText += answer[i] + "\n";
}
return answersText;
}
或者为此简单地使用join
:
function iterate(answer) {
return answer.join("\n");
}