Stack Overflow en español Asked on November 29, 2021
mi html
<form action="" class="formulario">
<label><p>Ingrese su ci: <input type="text" id="cedulaaa" required autofocus placeholder="25000111" maxlength="10" ></p></label>
<p>
<input type="reset" value="Restaurar">
<input type="submit" onClick="esValido()" value="Acceder" id="aaceder">
</p>
</form>
mi javascript
function validacioon() {
let datos = {"cedulas":["25000111", "21000222", "22444333", "23222333", "25111222"]};
let cedula = document.getElementById("cedulaaa").value; //permite el acceso a un elemento por su id
let arrays = Object.values(datos)
return arrays.includes(cedula)
}
function esValido() {
let valides = validacioon()
if (valides === true){
alert( "exacto" );}}
me gustaria validar este objeto JSON y no me valida porque tengo entendido que con el Object.values lo recorro y me devuelve los valores en un array y luego le estoy metiendo en el retorno el includes para que me devuelva un booleano porfavor me gustaria una ayudita para ver que esta mal o si le falta algo.
Cambia esta linea:
let arrays = Object.values(datos)
por esta:
let arrays = datos.cedulas;
Pues tu solo necesitas hacer la comprobacion con el arreglo de cedulas, por lo tanto no necesitas ponerte a sacar los values de todas las propiedades del objeto.
Esto que he hecho es mucho mas corto y arregla el error.
Pero para que entiendas mejor el porque esto no funciona:
let arrays = Object.values(datos)
Es simplemente porque recuerda que Object.values
, te devuelve en un array, los values de cada una de las propiedades de un Object
, por tanto al hacer:
Object.values(datos);
Lo que enrealidad estarias obteniendo NO es:
["25000111", "21000222", "22444333", "23222333", "25111222"]
Si no:
[["25000111", "21000222", "22444333", "23222333", "25111222"]]
Porque en este caso el value de nuestra propiedad cedulas es un array entero.
Por lo tanto si quisieras que tu codigo funcionara pero usando Object.values
tendrias que primero acceder a la pocision [0]
, que contendría todas las cedulas:
let arrays = Object.values(datos)[0];
Pero claro, esto solo funcionaria si tu Object
esta en orden de tal manera que su primera propiedad sea cedulas
, pues si hay mas propiedades los valores del object diferiran en orden.
Answered by Riven on November 29, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP