如何有提示的返回语句

问题描述 投票:0回答:1

我有一个提示,从数组中询问各种问题,我希望这样,如果用户按下取消,则返回 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];
  }
}

javascript html
1个回答
0
投票

首先:请发布更多代码。数组的内容是什么?您使用 return 语句,因此这必须是一个函数。所以如果没有 function() { ... } 和函数调用,代码是不完整的。

问题:

  1. 您在

    questions[]
    中的问题是否超过 1 个?如果没有,什么也不会发生!你的 for 循环从 1 开始。
    question.length
    是 1。1 不低于 1,所以 for 循环不会运行。

  2. 当没有更多问题或单击“取消”时,循环应该结束,对吗?

声明:

  1. 循环结束时,您的代码不会返回任何内容(没有更多问题)。于是你就变成了

    undefined

  2. 您对条目不执行任何操作,因此答案总是会丢失! (您想在最后返回答案吗?您是否希望仅在为所有问题输入这些答案后才返回答案?(否则

    return 0
    )?)

解决方案:

  1. 简单地返回对象(
    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,直到单击“取消”)。


  1. 完全返回包含所有信息的对象
    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: []

© www.soinside.com 2019 - 2024. All rights reserved.