我有一个提示,从数组中询问各种问题,我希望这样,如果用户按下取消,则返回 0 并停止。当我收到退货时,什么也没有弹出。我可以有退货声明吗?还是不可能。
let promptText = questions[0];
for (let i = 1; i < questions.length; i++) {
let userAnswer = prompt(promptText);
if (userAnswer === null) {
return 0;
} else {
promptText = questions[i];
}
}
首先:请发布更多代码。数组的内容是什么?您使用 return 语句,因此这必须是一个函数。所以如果没有 function() { ... } 和函数调用,代码是不完整的。
问题:
您在
questions[]
中的问题是否超过 1 个?如果没有,什么也不会发生!你的 for 循环从 1 开始。question.length
是 1。1 不低于 1,所以 for 循环不会运行。
当没有更多问题或单击“取消”时,循环应该结束,对吗?
声明:
循环结束时,您的代码不会返回任何内容(没有更多问题)。于是你就变成了
undefined
您对条目不执行任何操作,因此答案总是会丢失! (您想在最后返回答案吗?您是否希望仅在为所有问题输入这些答案后才返回答案?(否则
return 0
)?)
解决方案:
cancel
和answers
)function p(questions) {
var answers = [];
for (let i = 0; i < questions.length; i++) {
let userAnswer = prompt(questions[i]);
if (userAnswer === null) {
return { cancel: true, answers: answers };
} else {
answers.push(userAnswer);
}
}
return { cancel: false, answers: answers };
}
var questions = [ "Question 1", "Question 2", "Question 3" ];
console.log(p(questions));
在此代码中,您有:
3 个问题 p() 函数会询问所有问题,直到单击 cancel。
它返回一个具有 2 个属性的对象:
cancel
:如果单击取消按钮,则true
,否则false
answers
:一个数组,其中包含答案列表,其顺序与问题相同(全部或第一个 x,直到单击“取消”)。
cancel
、questions
和 answers
function p(questions) {
var results = [];
for (let i = 0; i < questions.length; i++) {
let userAnswer = prompt(questions[i]);
if (userAnswer === null) {
return { cancel: true, results: results };
} else {
results.push( { question: questions[i], answer: userAnswer } );
}
}
return { cancel: false, results: results };
}
var questions = [ "Question 1", "Question 2", "Question 3" ];
console.log(p(questions));
这将返回一个具有 2 个属性的对象:
cancel
:同上(true
= 单击取消按钮)
results
:一个数组,其属性 question
包含原始问题,answer
包含输入的答案。
喜欢:
{
"cancel": false,
"results": [
{ "question": "Question 1", "answer": "a" },
{ "question": "Question 2", "answer": "" },
{ "question": "Question 3", "answer": "c" }
]
}
未输入任何内容 == 空字符串 点击取消按钮,
results
不包含剩余问题。
如果您在 questions[]
中没有任何疑问,则返回始终为 cancel: false
和 answers: []
或 results: []
。