Mi problema general es encontrar los valores de las variables ''loginEmail'' y ''loginPass'' dentro de mi ''arrayRegistros''. Solo se convierte en VERDADERO cuando escribo el correo electrónico y la contraseña que se incluyen manualmente, sin embargo, siempre termina convirtiéndose en FALSO cuando uso las variables. Intenté convertir las variables en cadenas, luego usé document.getElementById junto con algunas otras ideas, pero hasta ahora, ninguna de ellas completó el sistema de inicio de sesión que había planeado. La ayuda que necesito es cómo se puede encontrar el valor/objeto de una determinada variable, dentro de una determinada matriz.
iniciar sesión (registro) {
this.arrayRegistros; var loginEmail = document.getElementById('userEmail'); var loginPass = document.getElementById('userPass'); var contaEmail = this.arrayRegistros.some((loginEmail) => { return loginEmail.emailRegistro.includes(loginEmail) }) var contaPass = this.arrayRegistros.some((loginPass) => { return loginPass.passRegistro.includes(loginPass) }) console.log(contaEmail) console.log(contaPass) }El primer problema es que está nombrando el parámetro en la función Array.prototype.some igual que la variable que desea verificar fuera del alcance del predicado.
En segundo lugar, suponiendo que this.arrayRegistros es una matriz con objetos con las claves emailRegistro y passRegistro que contienen cadenas, los elementos DOM NO PUEDEN coincidir con cadenas, pero un element.value sí.
Otra cosa que debe tener en cuenta es que include no es un operador de igualdad, 'a-very-strong-password'.includes('a'); devolverá true .
Y, por último, nunca debe validar el inicio de sesión y la contraseña en el navegador, porque el usuario puede editar el código JavaScript sobre la marcha e iniciar sesión sin ninguna credencial real.
Con eso en mente, creo que la solución sería algo así (ignorando el problema de validación del navegador):
const $userField = document.getElementById('userEmail'); const $passField = document.getElementById('userPass'); const registros = [ { email: 'example@example.com', password: 'a-very-strong-password' }, ...anotherUsers ]; function login(registro) { const { value: user } = $userField; const { value: pass } = $passField; // You can use `Array.prototype.some` to just know if the specific user credentials exist, or use `Array.prototype.find` to know if exist AND grab the user, to further utilization const item = registros.find(item => item.email === user && item.password === pass); if (item) { // User found } else { // User not found } }debe obtener valores de entradas como esta:
const data = [ { user : 'jhon', password : 'asdf123' }, { user : 'bob', password : 'asdf124' } ] const userName = document.getElementById('userEmail').value; const passWord= document.getElementById('userPassword').value; const findUser = data.filter( item => item.user === userName && item.password === passWord); if(findUser.length > 0){ //user found }