首页 > 解决方案 > 当 if 正确时,如何使此代码像 else 语句不存在一样工作,并且对 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];
      alert(`Welcome ${counted}`);
    } else {
      alert('Entrance denied');
    }
  }
}

标签: javascriptif-statementprompt

解决方案


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

  1. 在数组中找到名称后,在 if 语句的末尾使用break;以跳出循环all
  2. 更改elseelse if (i === all.length - 1) ie你到达了数组的末尾。
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. break;一旦从数组中找到名称就跳出循环all,稍后再检查

或者

  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');
      }
    }

推荐阅读