TransWikia.com

validar datos de un objeto JSON

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.

One Answer

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP