Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何摆脱这个循环_Javascript_For Loop - Fatal编程技术网

Javascript 如何摆脱这个循环

Javascript 如何摆脱这个循环,javascript,for-loop,Javascript,For Loop,我用JS开发了一个简单的登录系统。当密码、用户名或两者都不正确时,将显示警报,但现在显示4。我知道这是因为for循环,但我不知道如何在不破坏所有代码的情况下摆脱它。提前感谢=) 我在这里留下一段代码: function getName() { var user = document.getElementById('Username').value; var pass = document.getElementById('Password').value;

我用JS开发了一个简单的登录系统。当密码、用户名或两者都不正确时,将显示警报,但现在显示4。我知道这是因为for循环,但我不知道如何在不破坏所有代码的情况下摆脱它。提前感谢=)

我在这里留下一段代码:

function getName() {
      var user = document.getElementById('Username').value;
      var pass = document.getElementById('Password').value;
      
      for (let f = 0; f < arr.length; f++) {
        if (user == arr[f][0] && pass == arr[f][1]) {              
          document.write("Welcome back ", user, ", we've missed you");
        }
        if (user == arr[f][0] && pass != arr[f][0])  {
          alert("Your password is incorrect");
        }
        else if (user != arr[f][0] && pass == arr[f][1]) {
          alert("Your username is incorrect");
        }
        else {
          alert("Unnexistant account");
        }
      }
    }
函数getName(){ var user=document.getElementById('Username')。值; var pass=document.getElementById('Password')。值; 对于(设f=0;f添加
中断
在每个文档之后。编写或警告语句。

如果一个帐户的用户名错误,您不想告诉他们他们的帐户不存在,直到您检查每个帐户:

函数getName(){ var user=document.getElementById('Username')。值; var pass=document.getElementById('Password')。值; 对于(设f=0;f您的直觉是正确的,而for循环在这里可能并不理想。它很难阅读和调试,而且也有点难看。如果你想坚持下去,其他答案会告诉你怎么做

假设
arr
是用户名和密码的数组,您可以将其转换为
Map
并完全删除循环

const map = new Map();
arr.map(e => m.set(e[0], e[1]));

try {
  if (map.get(user) === pass) {
    document.write("welcome back " + user + ", we missed you.");
  } else {
    // although this might be too much info from a security standpoint.
    document.write("incorrect password"); 
  }
} catch (e) {
  document.write("could not find user.");
}

delete键是一个好的开始(I kid I kid)---什么是
arr
?它是一组用户和密码吗?!什么是
arr
,为什么首先有一个循环?我猜你所有的用户和密码都存储在里面了?在这种情况下,您不能删除循环,但您必须添加
break语句在适当的位置扫描您发布的
arr
?文档。write()只接受一个参数。。。您希望
+
而不是逗号来构建字符串。但在页面加载后调用时,它也会清除页面中的所有内容是的,arr是用户名和密码的数组。很抱歉,如果我写错了什么,我在这方面并不陌生,有时对我来说也很难。谢谢你的反馈,非常感谢:谢谢你回答这个问题。如果你特别喜欢一个答案(不管是哪一个),为了回答者和将来看这个问题的人,请把它标记为正确答案!欢迎来到SO:)非常感谢你的反馈,伙计^^