如果JavaScript中存在条件,如何使用forEach循环返回true
我创建了一个数组和变量:如果JavaScript中存在条件,如何使用forEach循环返回true,javascript,for-loop,foreach,Javascript,For Loop,Foreach,我创建了一个数组和变量: var database = [ { username:"candy", password:"666" }, { username: "abby", password: "123" }, { username: "bob", password: "777" } ]; var newsFeed = [ {
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数据库中的所有数组值,然后检查它们是true
还是false
以下是代码的其余部分:
database.forEach(checkDatabase2);//using forEach
function checkDatabase2(username,password) {
if (username === database.username && password === database.password){
return true;
}
return false;
最后,要检查它是否正确,请打印新闻提要,因为它将有警报,下面是我要做的:
function signIn(username,password) {
if (checkDatabase2(username,password)===true){
console.log(newsFeed);
}else{
alert("Opps! Worng Password!");
}
}
signIn(usernamePrompt,passwordPrompt);
但当我输入我输入的值时,总是出现alert(“Opps!Worng Password!”)代码>如何修复它当我从数据库=[]
中输入正确的值时,它将返回true???不要使用forEach()
,使用some()
您还必须将循环放入checkDatabase2()
函数中,而不是在循环中调用它
function checkDatabase2(username, password) {
return database.some(user => user.username == username && user.password = password);
}
您可以选择使用some
检查数组元素中是否至少有一个元素是用户名和密码
var数据库=[{“用户名”:“糖果”,“密码”:“666”},{“用户名”:“艾比”,“密码”:“123”},{“用户名”:“鲍勃”,“密码”:“777”}];
函数checkDatabase2(用户名、密码){
返回database.some(o=>o.username==username&&o.password==password);
}
日志(checkDatabase2(“bob”,“777”));
log(checkDatabase2(“bob”,“NOT777”)代码>不要使用forEach
,请使用一些
函数验证(用户名、密码){
返回数据库.some(函数(项){
返回(item.username==用户名和&item.password==密码);
});
}
函数checkDatabase2(用户名、密码){
如果(验证(用户名、密码)){
返回true;
}
返回false;
}
您可以使用find
代替下面的forEach
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!"
}
];
function checkDatabase2(username, password) {
return database.find(
item => item.username === username && item.password === password
);
}
function signIn(username,password) {
if (checkDatabase2(username,password)){
console.log(newsFeed);
}else{
alert("Opps! Worng Password!");
}
}
var usernamePrompt = prompt("What\'s your username?");
var passwordPrompt = prompt("What\'s your password?");
signIn(usernamePrompt, passwordPrompt);
我认为forEach()不是最好的方法,你可以尝试filter()
,或者你可以尝试some()
由于上面有很多some()
示例,我将提供filter()
exampe的回调函数。forEach()
将始终返回未定义的,因此不要期望任何布尔值,除非该函数变异或修改在函数外部声明的预先存在的数组。