Búsqueda de sitios web

¿Cómo verifico si un objeto tiene una clave en JavaScript?


¿Cuál es lo correcto de hacer?

if (myObj['key'] == undefined)

o

if (myObj['key'] == null)

o

if (myObj['key'])

Respuesta #1

Prueba el operador in de JavaScript.

if ('key' in myObj)

Y el inverso.

if (!('key' in myObj))

¡Cuidado! El operador in coincide con todas las claves del objeto, incluidas las de la cadena de prototipos del objeto.

Usa myObj.hasOwnProperty('key') para comprobar las claves propias de un objeto y solo devolverá true si key está disponible directamente en myObj:

myObj.hasOwnProperty('key')

A menos que tengas una razón específica para usar el operador in, usar myObj.hasOwnProperty('key') produce el resultado que la mayoría del código busca.

Respuesta #2

Deberías usar hasOwnProperty. Por ejemplo:

myObj.hasOwnProperty('myKey');

Nota: Si estás usando ESLint, lo anterior puede darte un error por violar la regla no-prototype-builtins, en ese caso la solución alternativa es la siguiente:

Object.prototype.hasOwnProperty.call(myObj, 'myKey');

Artículos relacionados