Comprobar si existe una clave
Parte de la sección Lógica y Flujo del Journey de JavaScript de Coddy — lección 16 de 65.
Para comprobar si existe una clave específica en un objeto JSON, utiliza el operador in o hasOwnProperty(). Por ejemplo:
const product = { "name": "Laptop", "price": 900 };
if ("price" in product) {
console.log("Key exists!");
}
if (product.hasOwnProperty("price")) {
console.log("Key exists!");
}Esto resulta útil para verificar si ciertos datos están presentes antes de procesarlos.
obj.hasOwnProperty("key") devolverá false si obj no tiene key como su propia propiedad. Sin embargo, obj.key === undefined no necesariamente significa que hasOwnProperty("key") devolverá false. Hay dos casos en los que obj.key es undefined:
- La propiedad no existe en absoluto →
hasOwnProperty("key")devuelvefalse. - La propiedad existe pero tiene un valor de
undefined→hasOwnProperty("key")devuelvetrue.
Por ejemplo:
const obj1 = {};
console.log(obj1.key); // undefined
console.log(obj1.hasOwnProperty("key"));
// false
const obj2 = { key: undefined };
console.log(obj2.key); // undefined
console.log(obj2.hasOwnProperty("key"));
// trueDesafío
FácilCrea una función llamada toggleBookStatus que recibe un objeto libro como parámetro. La función debe:
- Si el libro tiene una propiedad
isReadque es true, cámbiala a false - Si el libro tiene una propiedad
isReadque es false, cámbiala a true - Si el libro no tiene una propiedad
isRead, añádela y establécela en true - Devuelve el objeto libro modificado
Hoja de referencia
Para verificar si existe una clave específica en un objeto JSON, utiliza el operador in o hasOwnProperty():
const product = { "name": "Laptop", "price": 900 };
// Usando el operador 'in'
if ("price" in product) {
console.log("Key exists!");
}
// Usando hasOwnProperty()
if (product.hasOwnProperty("price")) {
console.log("Key exists!");
}hasOwnProperty() devuelve true si la propiedad existe (incluso si su valor es undefined), y false si la propiedad no existe:
const obj1 = {};
console.log(obj1.hasOwnProperty("key")); // false
const obj2 = { key: undefined };
console.log(obj2.hasOwnProperty("key")); // truePruébalo tú mismo
function toggleBookStatus(book) {
// Escribe tu código aquí
}
// No escribas nada fuera de la funciónEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Strings en profundidad
Fundamentos de stringsIterar sobre stringsTemplate LiteralsMétodos de stringsResumen - String Weaver4JSON Parte 2
Iterar sobre JSONJSON anidadoEncadenamiento opcional en JSONCopia superficial y profundaResumen - Tienda de bicicletasResumen - Sistema solar7Sistema de Gestión de Biblioteca
Descripción general del proyectoAñadir libros10Gestionar el sistema del festival
Descripción general del proyectoAñadir películas y sedes2Arreglos multidimensionales
Conceptos básicos de arreglos 2DAcceso a elementos de arreglos 2DBucles anidados con arreglos 2DResumen - Arreglos 2DSuma y resta de matricesArreglos irregulares (Jagged Arrays)Arreglos 3D y más alláPatrones comunes en arreglos 2DResumen - Todo sobre arreglos5Conjuntos Parte 1
¿Qué es un conjunto?Iterar sobre conjuntosAñadir un elementoEliminar un elementoComprobar si un elemento existeTamaño y Is EmptyCopy y ClearResumen - Conceptos básicos de conjuntos8Temas interesantes de Arrays
Desestructuración de ArraysSintaxis Spread en ArraysArrays dispersosResumen - Taller de Arrays3JSON Parte 1
¿Qué es un JSON?Comprobar si existe una claveMétodos de objetoEl Spread Operator Parte 1El Spread Operator Parte 2Eliminar clavesResumen - Manipular claves de JSON