繁体   English   中英

函数返回未定义的javascript

[英]function is returning undefined javascript

我在 javascript 表达式中写了一个函数来检查结果是真还是假,但我总是收到未定义的错误

 var array = [{ email: 'usman@gmail.com', password: '123' }, { email: 'ali@gmail.com', password: '123' } ]; let main = function(email, password) { return array.forEach((row) => { if (row.email === email && row.password === password) { return true } else { return false } }); }; var checkLogin = main('usman@gmail.com', '123'); console.log(checkLogin)

checkLogin 总是返回 undefined

这是因为forEach不返回任何内容。 您可以使用简单的 for 循环,如下所示:

 var array = [ {email: 'usman@gmail.com', password: '123'}, {email: 'ali@gmail.com', password: '123'} ]; let main = function(email, password) { for (var i = 0; i < array.length; i++) { var row = array[i]; if (row.email === email && row.password === password) { return true } } return false; }; var checkLogin = main('usman@gmail.com', '123'); console.log(checkLogin)

另外,看看some()includes()find()findIndex()

forEach数组函数不返回任何内容。 如果您触摸其中的循环数组,则无需复制即可修改现有数组。

foreach 有问题。 它不会返回任何东西

var array = [
{email: 'mike@gmail.com', password: '123'},
];

let main = function(email, password) {

   for (var i = 0; i < array.length; i++) {
   if (array[i].email === email && array[i].password === password) {
    return true
     } 
       };
      return false
     };

   var checkLogin = main('mike@gmail.com', '123');
   console.log(checkLogin) // returns true

这个逻辑有问题:

return array.forEach((row) => {
if (row.email === email && row.password === password) {
  return true

} else {
  return false
}
});

没有这个逻辑它会返回你想要的任何东西

您可以使用Array#some并返回检查结果。

 var array = [{ email: 'ali@gmail.com', password: '123' }, { email: 'usman@gmail.com', password: '123' }]; let main = (email, password) => array.some(row => row.email === email && row.password === password); var checkLogin = main('usman@gmail.com', '123'); console.log(checkLogin)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM