Original article: JavaScript Key in Object – How to Check if an Object has a Key in JS

Los objetos en JavaScript son tipos de datos no primitivos que contienen una colección de pares clave-valor.

s_D8321C80F6574B261A5AA02D2476A50C8DDF61A6CC2583DCEE0E18EC365EF07B_1658417045591_Untitled+Diagram

Como puede ver en la imagen de arriba, la clave es la propiedad y cada valor en el objeto debe tener una clave.

Cuando interactúa con objetos, pueden surgir situaciones que requieran que verifique si existe una clave en particular. Es importante tener en cuenta que, si sabe que existe una clave, automáticamente significa que existe un valor. Este valor puede ser cualquier cosa, incluso vacío, null o undefined.

En este artículo, aprenderemos los distintos métodos para comprobar si la clave de un objeto existe en JavaScript.

En caso de que tenga prisa, estos son los dos métodos estándar que podemos usar para comprobar si una clave existe en un objeto.

// Usando el operador in
'clave' in objeto

// Usando el método hasOwnProperty()
objeto.hasOwnProperty('clave')

Cómo comprobar si un objeto tiene una clave en JavaScript con el operador in

Puede utilizar el operador in en JavaScript para comprobar si una propiedad/clave específica existe en un objeto. Tiene una sintaxis sencilla y devuelve true si la propiedad/clave específica existe en el objeto o en su cadena de prototipo.

La sintaxis al usar el operador in es:

'clave' in objeto

Supongamos que tenemos un objeto con detalles de un usuario:

let usuario = {
  nombre: "John Doe",
  edad: 40
};

Podemos verificar si existe una clave con el operador in como se ve a continuación:

'nombre' in usuario; // retorna true
'pasa-tiempo' in usuario; // retorna false
'edad' in usuario; // retorna true

Nota: El valor antes de la palabra reservada in debe ser de tipo string o de tipo symbol.

Cómo comprobar si un objeto tiene una clave en JavaScript con el método hasOwnProperty()

Puede usar el método hasOwnProperty() de JavaScript para comprobar si un objeto específico tiene la propiedad dada.

Este método es muy similar al operador in. Toma una cadena y devolverá true si la clave existe en el objeto o devolverá false en caso contrario.

La sintaxis para usar el método hasOwnProperty es:

objeto.hasOwnProperty('clave')

Supongamos que tenemos un objeto que contiene los detalles de un usuario:

let usuario = {
  nombre: "John Doe",
  edad: 40
};

Podemos comprobar que existe una clave con el método hasOwnProperty() como se ve a continuación:

usuario.hasOwnProperty('nombre'); // retorna true
usuario.hasOwnProperty('pasa-tiempo'); // retorna false
usuario.hasOwnProperty('edad'); // retorna true

Nota: El valor antes de la palabra reservada in debe ser de tipo string o de tipo symbol.

Como ahora sabemos que existen estos métodos, podemos usar una condicional para comprobar cualquier operación:

if ("nombre" in usuario) {
  console.log("la clave existe en el objeto");
}

// o

if (usuario.hasOwnProperty("nombre")) {
  console.log("la clave existe en el objeto");
}

Para terminar

En este artículo, hemos aprendido cómo comprobar si un objeto tiene una clave utilizando los dos métodos estándar. La diferencia entre los dos métodos es que Object.hasOwnProperty() busca una clave solo en el objeto, mientras que el operador in busca la clave en el objeto y en su cadena de prototipo.

Hay otros métodos que puede utilizar, pero en algún momento pueden resultar demasiado elaborados y no tan fáciles de entender. También pueden fallar cuando se prueban en determinadas condiciones.

Por ejemplo, podríamos usar el encadenamiento opcional (optional chaining), de modo que, si una clave especificada no existe, devolverá un valor undefined:

let usuario = {
  nombre: "John Doe",
  edad: 40
};

console.log(usuario?.nombre); // retorna John Doe
console.log(usuario?.["pasa-tiempo"]); // retorna undefined
console.log(usuario?.edad); // retorna 40

Entonces podríamos crear una condición que, cuando no sea igual a undefined, signifique que la clave existe:

if (usuario?.["pasa-tiempo"] !== undefined) {
  console.log("La clave existe en el objeto");
}

Como dijimos anteriormente, estos métodos fallan cuando probamos ciertas condiciones poco comunes. Por ejemplo, en una situación cuando una clave particular está configurada como undefined, como se ve a continuación, la condición falla:

let usaurio = {
  nombre: "John Doe",
  edad: undefined
};

console.log(usuario?.edad); // regresa undefined

Otro ejemplo que funciona, pero se vuelve complicado es cuando usamos el método Object.keys() junto con el método some(). Esto funciona, pero realmente no es fácil de entender.

let usuario = {
  nombre: "John Doe",
  edad: undefined
};

const verificarSiClaveExiste = (nombreObjeto, nombreClave) => {
  let claveExiste = Object.keys(nombreObjeto).some(clave => clave === nombreClave);
  return claveExiste;
};

console.log(verificarSiClaveExiste(usuario, 'nombre')); // regresa true

En el código anterior, ponemos todas las claves en un arreglo y luego aplicamos el método some() para probar si al menos un elemento del arreglo pasa la prueba. Si pasa, regresa true, caso contrario regresa false.


¡Feliz codificación!

¡Embárcate en un viaje de aprendizaje! Explore más de 200 artículos sobre desarrollo web. Echa un vistazo a mi blog para ver más contenido genial mío.