首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果forEach中有条件,如何使用JavaScript循环返回true

如果forEach中有条件,如何使用JavaScript循环返回true
EN

Stack Overflow用户
提问于 2019-07-18 03:23:26
回答 5查看 8.1K关注 0票数 2

有一个数组,我创建了var:

代码语言:javascript
复制
var database = [
    {
        username:"candy",
        password:"666"
    },
    {
        username: "abby",
        password: "123"
    },
    {
        username: "bob",
        password: "777"
    }
];

var newsFeed = [
    {
        username: "Bob",
        timeline: "So tired from all that learning!"
    },
    {
        username: "Midori",
        timeline: "Javascript is sooooo cool!"
    },
    {
        username: "Abby",
        timeline: "Javascript is preeetyy cool!"
    }
]

var usernamePrompt = prompt("What\'s your username?");
var passwordPrompt = prompt("What\'s your password?");

我想使用forEach来遍历var database中的所有数组值,然后检查它们是true还是false,这里是代码的其余部分:

代码语言:javascript
复制
database.forEach(checkDatabase2);//using forEach

function checkDatabase2(username,password) {
    if (username === database.username && password === database.password){
        return true;
    }
return false;

最后,要检查是否为真,请打印newsFeed,它将发出警告,下面是我所做的工作:

代码语言:javascript
复制
function signIn(username,password) {
    if (checkDatabase2(username,password)===true){
            console.log(newsFeed); 
    }else{
        alert("Opps! Worng Password!");
    }
}
signIn(usernamePrompt,passwordPrompt);

但是当我输入值时--不管我放什么--总是涉及到alert("Opps! Worng Password!"); --当我从database =[]中输入正确的值时,它将返回true??

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-07-18 03:31:20

一个选项是使用some检查数组元素中是否至少有一个元素是用户名和密码。

代码语言:javascript
复制
var database = [{"username":"candy","password":"666"},{"username":"abby","password":"123"},{"username":"bob","password":"777"}];

function checkDatabase2(username, password) {
  return database.some(o => o.username == username && o.password == password);
}

console.log(checkDatabase2("bob", "777"));
console.log(checkDatabase2("bob", "NOT777"));

票数 7
EN

Stack Overflow用户

发布于 2019-07-18 03:51:59

不要使用forEach,使用some

代码语言:javascript
复制
function validate (username, password) {
  return database.some(function(item) {
    return (item.username === username && item.password === password);
  });
}

function checkDatabase2 (username, password) {
   if (validate(username, password)) {
     return true;
   }
   return false;
}

票数 1
EN

Stack Overflow用户

发布于 2019-07-18 03:31:01

不要使用forEach(),使用some()

您还必须将循环放在checkDatabase2()函数中,而不是在循环中调用它。

代码语言:javascript
复制
function checkDatabase2(username, password) {
    return database.some(user => user.username == username && user.password = password);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57086682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档