En este breve tutorial vamos a ver cómo comprobar si una propiedad o una clave existe en un objeto en JavaScript.
Para ello vamos a proponer el siguiente ejemplo:
const persona = {
nombre: 'Edu'
}
Existen varias formas de saberlo, que son las que veremos a continuación.
El operador in
El uso del operador in
es el que suele usar para saber si una determinada clave está en un objeto.. Para comprobar si la propiedad nombre
existe en el objeto persona de nuestro ejemplo, puedes realizar la operación 'nombre' in persona
, que en este caso devolverá el valor true
:
const existe = 'nombre' in persona;
console.log(existe); // true
También puedes realizar la siguiente comparación:
if ('nombre' in persona) {
console.log('Existe'); //true
}
En caso de que la propiedad no exista, el operador in
devolverá false
como resultado.
Cuando utilizas herencia de objetos, el operador in
devolverá true
incluso en el caso de que la propiedad sea heredadas de los ancestros del objeto, siempre y cuando la propiedad exista en alguno de ellos, claro está.
El método hasOwnProperty
Otra forma de saber si una propiedad existe, consiste en usar el método hasOwnProperty
, incluido por defecto en todos los objetos de JavaScript. La operación persona.hasOwnProperty('nombre')
devolverá también el valor true
:
const existe = persona.hasOwnProperty('nombre');
console.log(existe); // true
Usando el método en un condicional::
if (persona.hasOwnProperty('nombre')) {
console.log('Existe'); // true
}
En caso de que la propiedad no exista, el resultado será false
.
A diferencia del operador in
, el método hasOwnProperty()
no funcionará con las propiedades heredadas. Solamente se devolverá true
siempre y cuando la propiedad exista directamente en el objeto sobre el que se ejecuta el método. Si la propiedad existiese en un ancestro y no en el propio objeto, el resultado del método sería false
.
Consideraciones adicionales
Existe también un método que puedes seguir para definir valores por defecto para ciertas propiedades en caso de que no existan. Por ejemplo, vamos a crear una nueva variable y a asignarle las propiedades nombre
y apellido
del objeto persona
de nuestro ejemplo:
const empleado = {
nombre: persona,nombre,
apellido: persona.apellido || 'Ninguno'
}
En este caso, dado que la propiedad apellido
no existe en el objeto persona
, el valor de empleado.apellido
tendrá como valor la cadena 'Ninguno'
.
Y esto ha sido todo.