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

154
Vistas
Cómo puedo omitir la variable si no está definida en javascript

Intento obtener algunos datos json de mi api, pero me enfrenté a este problema:

ingrese la descripción de la imagen aquí

Codifique javascript para obtener datos json de mi API:

 // Get Specs $.getJSON('https://my_api' , function(specs) { console.log(specs); $.each(specs, function(index, vsp) { console.log(vsp); var in = vsp.specs[0].value; var ch = vsp.specs[1].value; var ra = vsp.specs[2].value; var ca = vsp.specs[3].value; var ba = vsp.specs[4].value;

Datos JSON Ejemplo: 1:

 "specs": [ { "value": "info1" }, { "value": "info2" }, { "value": "info3" }, { "value": "infp4" }, { "value": "info5" } ]

Datos JSON Ejemplo: 2:

 "specs": [ { "value": "info1" }, { "value": "info2" }, { "value": "info3" }, { "value": "infp4" } ]

Para el primer ejemplo, todo funciona bien, pero para el segundo ejemplo tengo este problema:

 Cannot read properties of undefined (reading 'value') var ba = vsp.specs[4].value; ==> value is undefined

¿Cómo puedo omitir esta var si no está definida? Cualquier ayuda se lo agradecería.

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

0

solo puedes insertar un ? entre el nombre de la propiedad y el período entre la siguiente propiedad.

 var ba = vsp?.specs?.[4]?.value;

también puede usar el operador coalescente nulo:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede utilizar el operador de encadenamiento opcional ( ?. ).

Según MDN :

El operador de encadenamiento opcional ( ?. ) le permite leer el valor de una propiedad ubicada en lo profundo de una cadena de objetos conectados sin tener que verificar que cada referencia en la cadena sea válida.

Este operador puede ser útil en su caso de uso.


Para usarlo, simplemente use el código a continuación.

 var ba = vsp.specs[4]?.value;

Esto, en lugar de arrojar un error si no puede encontrar la propiedad de value , devolverá undefined .


Esto debería ayudar con el error. Sin embargo, aún debe agregar una verificación si la variable no está undefined . Puedes usar algo como a continuación.

 ba = ba ?? "Fallback";

Esto usará el valor del lado izquierdo ( ba ) a menos que sea null o undefined , en cuyo caso usará el valor del lado derecho ( "Fallback" ).

Una declaración if puede hacer algo similar.

 if (typeof ba === "undefined" || ba === null) { ba = "Fallback"; }

¡La razón por la que no puedes usar ! es porque evaluará cualquier cosa con un valor falso como false . Esto solo retrocederá si no está undefined o es null .

about 4 years ago · Juan Pablo Isaza Denunciar

0

en el json2 es imposible obtener vsp.specs[4] porque solo tiene posiciones de 0 a 3 en la matriz, podría preguntar si la posición en la matriz existe algo así como

 var ba = (4<vsp.length) ? vsp.specs[4].value:null;

o

 var ba = vsp?.specs?.[4]?.value;
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