var database = [{
username: '1',
password: '2',
},
{
username: '3',
password: '4',
},
];
var newsfeed = [{
username: 'Bobby',
timeline: 'So tired from all that learning!',
},
{
username: 'Sally',
timeline: 'Javascript is sooooo cool!',
},
{
username: 'Mitch',
timeline: 'Javascript is preeetyy cool!',
},
];
var userNamePrompt = prompt('Enter username:');
var passwordPrompt = prompt('Enter password:');
function signIn(username, password) {
database.forEach(function (username, password) {
if (username === database.username && password === database.password) {
console.log(newsfeed);
}
console.log('Wrong information');
}
);
}
signIn(userNamePrompt, passwordPrompt);
编辑:我怀疑if语句((username === database.username && password === database.password)中的条件由于某些原因总是导致false。
发布于 2020-04-10 08:03:39
forEach的回调函数返回数据库元素的实例。因此,将其更改为:
var databases = [{
username: '1',
password: '2',
},
{
username: '3',
password: '4',
},
];
var newsfeed = [{
username: 'Bobby',
timeline: 'So tired from all that learning!',
},
{
username: 'Sally',
timeline: 'Javascript is sooooo cool!',
},
{
username: 'Mitch',
timeline: 'Javascript is preeetyy cool!',
},
];
var userNamePrompt = prompt('Enter username:');
var passwordPrompt = prompt('Enter password:');
function signIn(username, password) {
databases.forEach(function (database) {
if (username === database.username && password === database.password) {
console.log(newsfeed);
}
else{console.log('Wrong information');}
}
);
}
signIn(userNamePrompt, passwordPrompt);
我建议这样做:
var databases = [{
username: '1',
password: '2',
},
{
username: '3',
password: '4',
},
];
var newsfeed = [{
username: 'Bobby',
timeline: 'So tired from all that learning!',
},
{
username: 'Sally',
timeline: 'Javascript is sooooo cool!',
},
{
username: 'Mitch',
timeline: 'Javascript is preeetyy cool!',
},
];
var userNamePrompt = prompt('Enter username:');
var passwordPrompt = prompt('Enter password:');
function signIn(username, password) {
for(let i = 0; i<databases.length;i++){
const database = databases[i];
if (username === database.username && password === database.password) {
console.log(newsfeed);
return
}
}
console.log('Wrong information');
}
signIn(userNamePrompt, passwordPrompt);
发布于 2020-04-10 07:59:55
传递给forEach回调的参数不是数据库数组中对象的属性,而是对象本身。
您需要在函数中访问该对象的属性。
database.forEach(function (obj) {
if (obj.username === database.username && obj.password === database.password) {
console.log(newsfeed);
}
console.log('Wrong information');
}
);发布于 2020-04-10 08:34:15
我检查了你的原始代码,发现了一些问题。首先,forEach并不像您期望的那样工作。它在每次迭代时将数组的一个元素发送到回调函数。如下所示:
array.forEach( function(elementOfArray) { return ... }在您的代码中,每个元素都是一个对象,因此可以使用以下命令检查它的值
var database = [{
username: '1',
password: '2',
},
{
username: '3',
password: '4',
},
];
var userNamePrompt = prompt('Enter username:');
var passwordPrompt = prompt('Enter password:');
function signIn(username, password) {
var userIsFound = false;
database.forEach(function (user) {
if (username === user.username && password === user.password) {
userIsFound = true;
};
})
if (userIsFound) return 'access granted'
return 'access denied'
}https://stackoverflow.com/questions/61131711
复制相似问题