Introducción
En este laboratorio, exploraremos cómo comprobar si un valor objetivo existe en un objeto JSON utilizando JavaScript. Utilizaremos la función hasKey() que nos permite comprobar secuencialmente las claves en el objeto para determinar si está presente el valor objetivo. Este laboratorio proporcionará una mejor comprensión de cómo trabajar con objetos JSON en JavaScript.
Función de JavaScript para Comprobar si un Objeto Tiene una Clave
Para comprobar si un valor objetivo existe en un objeto de JavaScript, utiliza la función hasKey.
La función toma dos argumentos: obj, el objeto JSON en el que se realizará la búsqueda, y keys, una matriz de claves a comprobar. Estos son los pasos para comprobar si el objeto tiene la clave(s) dada(s):
- Comprueba si la matriz
keysno está vacía. Si está vacía, devuelvefalse. - Utiliza el método
Array.prototype.every()para iterar sobre la matrizkeysy comprobar secuencialmente cada clave hasta la profundidad interna delobj. - Utiliza el método
Object.prototype.hasOwnProperty()para comprobar siobjno tiene la clave actual o no es un objeto. Si cualquiera de estas condiciones es verdadera, detén la propagación y devuelvefalse. - En caso contrario, asigna el valor de la clave a
objpara usarlo en la siguiente iteración. - Si se ha iterado correctamente sobre la matriz
keys, devuelvetrue.
Aquí está el código de la función hasKey:
const hasKey = (obj, keys) => {
return (
keys.length > 0 &&
keys.every((key) => {
if (typeof obj !== "object" || !obj.hasOwnProperty(key)) return false;
obj = obj[key];
return true;
})
);
};
Aquí hay algunos ejemplos de cómo utilizar la función hasKey:
let obj = {
a: 1,
b: { c: 4 },
"b.d": 5
};
hasKey(obj, ["a"]); // true
hasKey(obj, ["b"]); // true
hasKey(obj, ["b", "c"]); // true
hasKey(obj, ["b.d"]); // true
hasKey(obj, ["d"]); // false
hasKey(obj, ["c"]); // false
hasKey(obj, ["b", "f"]); // false
Resumen
¡Felicitaciones! Has completado el laboratorio Comprobar si un objeto tiene una clave. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.