Cómo saber si un objeto está vacío o no en JavaScript

¿Necesitas saber si un objeto está vacío o no?, en este fragmento de código te explico cómo usando Object.keys
javascript logo

Vamos a pensar que estamos trabajando en una plataforma que nos puede o no mandar un objeto con ciertas propiedades, y si las manda, hagamos X acción.

Normalmente para validar si hay una propiedad podríamos hacer lo siguiente:

const vieneElValor = objeto?.valor?.loQueNecesitamos || 'valor default';

Entonces podríamos validar si esa propiedad en el objeto llega, pero, ¿qué sucede si hay una propiedad dinámica de la que desconocemos las posibilidades que nos lleguen?

Es decir, podemos ver lo siguiente:

objeto = {
   valor: 'algo',
   valorDinamico: true,
   otroValorQueNoSabiamosQueExistia: {
      a: true,
      b: 2
   }
}

Aquí es donde podemos utilizar Object.keys lo que retornaría las llaves del objeto en forma de arreglo (array) y entonces podríamos acceder a la propiedad length (o longitud) para saber cuántos elementos hay y si no hay ninguno, entonces, la función nos retornará 0.

Por ejemplo entonces tendremos el siguiente código:

const objeto = { a: 1, b: false };
const estaVacio = Object.keys(objeto).length === 0;
console.log(estaVacio); 

Y si ejecutamos este código, podremos ver que estaVacio es falso porque tenemos 2 posiciones, si hacemos un console.log a la variable objeto adentro de Object.key veríamos lo siguiente:

(2) ['a', 'b']

Así, de esta manera, si un objeto tiene propiedades, tendríamos sus índices.

Si pasamos un arreglo, como por ejemplo:

const objeto2 = [];

Object.keys igual retornará un vacío. Así que no debemos preocuparnos. A menos que usemos parámetros inválidos como null undefined nos tirará un error del tipo Cannot convert X to object pero incluso números y cadenas de caracteres pueden ser pasados al método.

Por lo que, podrías implementar una lógica tolerante a fallos en un “encajonamiento” donde una función te valide, por ejemplo:

const objetoVacio = objeto => {
  try {
    return Object.keys(objeto).length === 0;
  } catch {
    return true;
  }
}

console.log(
  objetoVacio(1),
  objetoVacio(null),
  objetoVacio({}),
  objetoVacio('hello'),
  objetoVacio([]),
  objetoVacio({
    a: true,
    b: 1
  }),
  objetoVacio([{
    a: true
  }, {
    b: 1
  }])
);

De esta manera entonces veríamos en consola:

true, true, true, false, true, false, false

Y no veríamos errores, por lo que funciona y es tolerante a fallos, esperamos te ayude este fragmento de código.

¿Cuál es tu reacción?
+1
0
+1
0
+1
0
+1
0
+1
2
Total
0
Shares
Publicación anterior

Los malditos formularios de inicio de sesión y registro…

Siguiente Publicación
security protection anti virus software 60504

Encontrar código malintencionado en PHP con grep en Linux

Publicaciones Relacionadas