【问题标题】:How do I make this code work as though the else statement is inexistent when an if is correct, and equally do the same for the else statement当 if 正确时,如何使此代码像 else 语句不存在一样工作,并且对 else 语句同样执行相同的操作
【发布时间】:2025-12-24 21:25:16
【问题描述】:
let all = ['Nkechi', 'Añuli', 'Nneka'];

function start(){
  let begin = prompt('Name');
  let counted = "";
  for(let i = 0; i<all.length; i++){
    if(begin === all[i]){
      counted = all[i];
      alert(`Welcome ${counted}`);
    } else {
      alert('Entrance denied');
    }
  }
}

【问题讨论】:

  • 不确定您的意思。如果 if 的条件为真,则不会评估 else 分支。反之亦然。

标签: javascript if-statement prompt


【解决方案1】:

如果您想执行if else ,请在循环中执行

  1. all 数组中找到名称后,在 if 语句末尾使用 break; 以跳出循环
  2. else 更改为 else if (i === all.length - 1) 您已到达数组的末尾。
let all = ['Nkechi', 'Añuli', 'Nneka'];

function start(){
  let begin = prompt('Name');
  let counted = "";
  for(let i = 0; i<all.length; i++){
    if(begin === all[i]){
      counted = all[i];
      alert(`Welcome ${counted}`);
      break; // break here
    } else if (i === all.length - 1) { // change else
      alert('Entrance denied');
    }
  }
}

但您可以通过以下任一方式简化此逻辑

  1. all 数组中找到名称后,使用 break; 跳出循环并稍后再检查

  1. 首先完成您的循环并在最后执行if else 检查 底部如下图。
    let all = ['Nkechi', 'Añuli', 'Nneka'];
    
    function start(){
      let begin = prompt('Name');
      let counted = "";
      for(let i = 0; i<all.length; i++){
        if(begin === all[i]){
          counted = all[i];
        }
      }
      if (counted === "") {
        alert('Entrance denied');
      } else {
         alert(`Welcome ${counted}`);
      }
    }

您可以使用Array.includes 进一步简化所有这些操作,无需任何循环,如下所示

    const all = ['Nkechi', 'Añuli', 'Nneka'];
    function start() {
      const begin = prompt('Name');
      if (all.includes(begin)) {
         alert(`Welcome ${begin}`);
      } else {
         alert('Entrance denied');
      }
    }

【讨论】: