¿Comprobar si existe o no el valor del atributo de un JSON?

publicado por: Anonymous

Al comprobar si existen los siguientes valores para el atributo “propertyName”, quiero que si no existe me lo muestre. Pero el problema está en que me saca valores repetidos, tantas veces como objErrList.length hay.
Si encuentra valor, no se repite, pero si no lo encuentra repite todo el listado, ¿cómo lo puedo solucionar?

Podéis ejecutar el código para ver lo que ocurre

_x000D_

_x000D_

var errorList = '[{"propertyName":"nombre","error":"wrong"},{"propertyName":"direccion","error":"wrong"},{"propertyName":"email","error":"right"}]';_x000D_
_x000D_
var objErrList = JSON.parse(errorList);_x000D_
_x000D_
for(var j = 0; j < objErrList.length; j++) {_x000D_
_x000D_
    if (objErrList[j].propertyName === "email") {_x000D_
        console.log("existe email");_x000D_
    }_x000D_
    if (objErrList[j].propertyName === "nombre") {_x000D_
        console.log("existe nombre");_x000D_
    }_x000D_
    if (objErrList[j].propertyName === "ciudad") {_x000D_
        console.log("existe ciudad");_x000D_
    } else {_x000D_
    console.log("no existe ciudad");_x000D_
    }_x000D_
    if (objErrList[j].propertyName === "dni") {_x000D_
        console.log("existe dni");_x000D_
    } else {_x000D_
    console.log("no existe dni");_x000D_
    }_x000D_
    if (objErrList[j].propertyName === "pais") {_x000D_
        console.log("existe pais");_x000D_
    } else {_x000D_
    console.log("no existe pais");_x000D_
    }_x000D_
    if (objErrList[j].propertyName === "provincia") {_x000D_
        console.log("existe provincia");_x000D_
    } else {_x000D_
    console.log("no existe provincia");_x000D_
    }_x000D_
}

_x000D_

_x000D_

_x000D_

solución

Puedes crear un array con las propiedades a buscar y comprobar si existe algún elemento con ese nombre de propiedad:

_x000D_

_x000D_

var errorList = '[{"propertyName":"nombre","error":"wrong"},{"propertyName":"direccion","error":"wrong"},{"propertyName":"email","error":"right"}]';_x000D_
_x000D_
var objErrList = JSON.parse(errorList);_x000D_
_x000D_
var properties = ['email', 'nombre', 'ciudad', 'dni', 'pais', 'provincia'];_x000D_
_x000D_
for (var j = 0; j < properties.length; j++) {_x000D_
  console.log(_x000D_
    (objErrList.find(function(x) {return x.propertyName===properties[j];}) ? '' : 'no ') +_x000D_
    'existe ' + properties[j]_x000D_
  );_x000D_
}

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *