首页 > 解决方案 > forEach 循环数组中的对象

问题描述

database = [
  {
    username: 'mutho',
    password: 'muth',
  },
  {
    username: 'pica',
    password: '1234',
  },
  {
    username: 'rudy',
    password: '1235'
  }
];
news = [
  {
    username: 'sarah',
    timeline: 'Hellow',
  },
  {
    username: 'ingrid',
    timeline: 'hello world'
  },
  {
    username: 'rudy',
    timeline: 'secret',
  }
];

function isvalid(user, pass) {
  database.forEach(function (item, index) {
    if (item.username === user && item.password === pass) {
      return true;
    }
    return false;
  });
}

function signIn(user, pass) {
  if (isvalid(user, pass) === true) {
    console.log(news);
  }
  else {
    alert("Your Username and password wrong");
  }
}

var userprompt = prompt("Input your username : ");
var passprompt = prompt("Input your password : ");

signIn(userprompt, passprompt)

我有一些问题,我想显示消息是用户和密码在数据库中是正确的。但是当我运行这个程序时,它总是显示“您的用户名和密码错误”。我应该怎么办?

谢谢你的帮助

标签: javascriptarraysloopsobjectforeach

解决方案


您需要Array#some并返回此方法的结果。

function isvalid(user, pass) {
    return database.some(function(item, index) {
        return item.username === user && item.password === pass;
    });
}

function signIn(user, pass) {
    if (isvalid(user, pass)) {
        console.log(news);
    } else {
        alert("Your Username and password wrong");
    }
}


var database = [{ username: 'mutho', password: 'muth' }, { username: 'pica', password: '1234' }, { username: 'rudy', password: '1235' }],
    news = [{ username: 'sarah', timeline: 'Hellow' }, { username: 'ingrid', timeline: 'hello world' }, { username: 'rudy', timeline: 'secret' }],
    userprompt = prompt("Input your username:"),
    passprompt = prompt("Input your password:");

signIn(userprompt, passprompt);


推荐阅读