¿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');
