Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
¿Cómo agregar un encadenamiento opcional al objeto JSON?

Estoy tratando de comparar un valor dentro de un objeto JSON con una variable:

 if (resp.userdetails.name == username) { // do something }

El problema es que no todos los objetos resp tienen detalles de userdetails , por lo que a veces recibo este mensaje de error:

No se pueden leer las propiedades de undefined (leyendo 'nombre')

He intentado usar ? decir que podría ser opcional (o no existir):

 if (resp.userdetails?.name == username)

Pero recibo un error de Unexpected token en ese caso.

¿Puede alguien decirme cómo puedo actualizar mi declaración if para decir que los detalles del userdetails pueden no estar siempre en la respuesta, pero si es así, entonces verifique que el name sea igual al nombre de username ?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

O:

  • Use un motor JS que admita el encadenamiento opcional
  • Use una herramienta como Babel para transpilar su JS de una versión moderna del lenguaje a una más antigua que no admita el encadenamiento opcional
  • Pruebe manualmente el objeto existente antes de intentar leer una propiedad de él
 if (resp.userdetails && resp.userdetails.name == username)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si instaló lodash en su proyecto, entonces puede usar

 _.get(resp,"userdetails.name")

como está documentado .

Si no ha instalado lodash, le sugiero que lo instale desde npm porque lodash es el mejor paquete de utilidades y el más utilizado.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Lodash es una biblioteca popular basada en javascript que proporciona más de 200 funciones para facilitar el desarrollo web. Proporciona funciones auxiliares como mapa, filtro, invocación, así como vinculación de funciones, plantillas de JavaScript, comprobaciones profundas de igualdad, creación de índices, etc. Lodash se puede usar directamente dentro de un navegador y también con Node.js.

Trabajar con objetos usando JavaScript puede ser bastante desafiante, específicamente si tiene que manipularlos mucho. Lodash viene con muchas características que facilitan su trabajo con objetos.

Lodash es un proyecto de código abierto y puede contribuir fácilmente a la biblioteca y agregar funciones en forma de complementos y hacer que esté disponible en GitHub y en Node.js.

Sintaxis

_.get(objeto, ruta, [valor predeterminado]) Obtiene el valor en la ruta del objeto. Si el valor resuelto no está definido, se devuelve el valor predeterminado en su lugar.

Argumentos

objeto (Objeto) - El objeto a consultar.

ruta (Array|string) - La ruta de la propiedad a obtener.

[defaultValue] (*): el valor devuelto para valores resueltos indefinidos.

Si instaló lodash en su proyecto, entonces puede usar

 _.get(resp,"userdetails.name")

como está documentado .

Si no ha instalado lodash, le sugiero que lo instale desde npm porque lodash es el mejor paquete de utilidades y el más utilizado.

comando para instalar Lodash

 npm install loadash

ingrese la descripción de la imagen aquí P.ej:-

 var _ = require("lodash"); var data = [ { userdetails: { name: "d" } }, {}, { userdetails: {} }, { userdetails: { name: "d" } }, ]; for (i = 0; i < data.length; i++) { var resp = data[i]; if (_.get(resp, "userdetails.name") == "d") { // if (resp.userdetails && resp.userdetails.name == "d") { use without loadlash console.log("Success"); } else { console.log("failed"); } }

Aquí loadash es súper complejo. Pero puede usar esto para evitar errores de tiempo de ejecución. Debajo de ambas expresiones se obtiene el mismo resultado.

 resp.userdetails && resp.userdetails.name == "d" === _.get(resp, "userdetails.name") == "d"
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda