Comprobar si la clave existe en el objeto en JavaScript

Moataz Farid 12 octubre 2023
  1. Utilice el método de acceso directo al elemento para comprobar si la clave del objeto existe en JavaScript
  2. Utilizar el operador in para comprobar si la clave del objeto existe o no en JavaScript
  3. Utilice el método hasOwnProperty para comprobar si la clave del objeto existe o no en JavaScript
  4. Utilizar la librería underscore para comprobar si la clave del objeto existe o no en JavaScript
Comprobar si la clave existe en el objeto en JavaScript

En este tutorial, aprenderemos a comprobar si la clave existe en JavaScript utilizando múltiples formas.

Utilice el método de acceso directo al elemento para comprobar si la clave del objeto existe en JavaScript

Si una clave existe, no debería devolver undefined. Para comprobar si devuelve undefined o no, tenemos acceso directo a las claves, y se puede hacer en dos estilos, el estilo object, y el estilo de acceso a los corchetes.

En el siguiente ejemplo, mostraremos cómo comprobar si la clave existe mediante el acceso directo a la clave utilizando el estilo de corchetes.

let myObject = {'mykey1': 'My Value 1', 'mykey2': 'My Value 2'};

function isKeyExists(obj, key) {
  if (obj[key] == undefined) {
    return false;
  } else {
    return true;
  }
}
let result0 = isKeyExists(myObject, 'mykey0')
console.log('Check for the non-existing key, is key exists > ' + result0)

let result1 = isKeyExists(myObject, 'mykey1')
console.log('Check for the existing key, is key exists > ' + result1)

Producción :

Check for the non-existing key, is key exists > false
Check for the existing key, is key exists > true

El Otro estilo para comprobar la existencia de la clave por acceso directo es utilizando el estilo objeto. En el siguiente ejemplo, podemos ver cómo comprobar la existencia de la clave en JavaScript.

let myObject = {mykey1: 'My Value 1', mykey2: 'My Value 2'};

let result = myObject.mykey0 != undefined
console.log('Is myKey0 exists ? ' + result)

let result1 = myObject.mykey1 != undefined
console.log('Is myKey1 exists ? ' + result1)

Producción :

Is myKey0 exists ? false
Is myKey1 exists ? true

Uno de los inconvenientes de comprobar la existencia de undefined mediante el acceso directo a la clave es que el valor de la clave puede ser igual a undefined. Veamos el siguiente ejemplo para mostrar el problema con ese método.

let myObject = {mykey0: undefined, mykey1: 'My Value 1'};

let result = myObject.mykey0 != undefined
console.log('Is myKey0 exists? ' + result)

let result1 = myObject.mykey1 != undefined
console.log('Is myKey1 exists? ' + result1)

Resultado:

Is myKey0 exists? false
Is myKey1 exists? true

La solución del caso anterior es no asignar nunca undefined a una propiedad cuando queremos inicializarla con un valor indefinido, sino inicializarla con null en su lugar.

Si insistimos en utilizar el valor undefined para inicializar las claves, debemos utilizar el operador in, el método hasOwnProperty, o el método _.has de la biblioteca.

Utilizar el operador in para comprobar si la clave del objeto existe o no en JavaScript

El operador in se utiliza simplemente para devolver false si la clave no se encuentra en el objeto de destino y devuelve true si se encuentra.

let myObject =
    {favoriteDish: 'Spaghetti', language: 'English'}

    function isKeyExists(obj, key) {
      return key in obj;
    }

    console.log(
        'Does language key exists? ' + isKeyExists(myObject, 'language'))
console.log(
    'Does nationality key exists? ' + isKeyExists(myObject, 'nationality'))

Producción :

Does language key exists? true
Does nationality key exists? false

Utilice el método hasOwnProperty para comprobar si la clave del objeto existe o no en JavaScript

Otra forma de comprobar si el objeto contiene una clave de propiedad específica o no es utilizar el método hasOwnProperty. En el siguiente ejemplo, mostraremos cómo podemos utilizar el método hasOwnProperty.

let myObject =
    {favoriteDish: 'Spaghetti', language: 'English'}

    function isKeyExists(obj, key) {
      return obj.hasOwnProperty(key);
    }

    console.log(
        'Does the object have language key? ' +
        isKeyExists(myObject, 'language'))
console.log(
    'Does the object have nationality key? ' +
    isKeyExists(myObject, 'nationality'))

Producción :

Does the object have language key? true
Does the object have nationality key? false

Utilizar la librería underscore para comprobar si la clave del objeto existe o no en JavaScript

Si ya estamos utilizando alguno de los métodos de la librería underscore, podemos utilizar el método _.has(), ya que devuelve true si ese objeto tiene la clave proporcionada y devuelve false en caso contrario.

let myObject =
    {favoriteDish: 'Spaghetti', language: 'English'}

    console.log(
        'Check using underscore library if the object has language key? ' +
        _.has(myObject, 'language'))

console.log(
    'Check using underscore library if the object has nationality key? ' +
    _.has(myObject, 'nationality'))

Producción :

Check using underscore library if the object has language key? true
Check using underscore library if the object has nationality key? false

Podemos importar la librería desde aquí.

Artículo relacionado - JavaScript Object