Como verificar se objeto está vazio em JavaScript

Neste artigo você vai aprender a como verificar se objeto está vazio em JavaScript de uma forma fácil, apenas utilizando recursos de JS!

verificar se objeto está vazio em JavaScript capa

Fala programador(a), beleza? Bora aprender mais sobre objetos e JavaScript!

Para esta tarefa temos duas boas abordagens, isso por que a versão de JavaScript ES6 ainda não está totalmente padronizada nos navegadores

Então é interessante ter uma abordagem cross browser e outra que possa ser utilizada nas versões mais recentes da linguagem, para Node ou TypeScript, por exemplo

Vamos então a abordagem padronizada primeiramente!

Nela vamos checar se o objeto possui alguma propriedade e também se o objeto é um objeto vazio

Formação Claude Code
Formação Recomendada

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

E retornar  um booleano baseado nestas verificações feitas, veja o código:

function isEmpty(obj) {
  for(var prop in obj) {
    if(obj.hasOwnProperty(prop)) {
      return false;
    }
  }

  return JSON.stringify(obj) === JSON.stringify({});
}

console.log(isEmpty({})); // true
console.log(isEmpty({nome: "Matheus"})); // false

Perceba que no primeiro teste temos true, objeto vazio, e na segunda temos false, já que o objeto possui valores

Objeto vazio em ES6

Agora vamos para a próxima abordagem, utilizando a versão ES6+ da linguagem JS

Aqui temos acesso as chaves do objeto e podemos verificar a sua length

Outra possibilidade é também checar a presença de um constructor, já que esta versão da linguagem já o possui

Veja a abordagem:

function isEmpty(obj) {
  return Object.keys(obj).length === 0 && obj.constructor === Object;
}

console.log(isEmpty({})); // true
console.log(isEmpty({nome: "Matheus"})); // false

Muito mais simples esta abordagem, por que com a evolução da linguagem temos acessos a mais recursos e também mais avançados

Conclusão

Neste artigo vimos como verificar se objeto está vazio em JavaScript

Utilizamos duas abordagens, uma com as funcionalidades padronizadas em todos os navegadores, ou seja antes da versão ES6

Onde verificamos cada uma das propriedades do objeto para então dar o retorno

E já na versão ES6 temos acessos a propriedades novas como as keys, e também podemos validar a presença do constructor

Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube

E se o objeto for null ou undefined?

Aqui mora um perigo que pega muita gente

Se você jogar null ou undefined dentro dessas funções, o Object.keys quebra e estoura um erro na sua cara

Então antes de checar se está vazio, vale garantir que a variável é realmente um objeto

function isEmpty(obj) { if (obj == null) return true return Object.keys(obj).length === 0 && obj.constructor === Object }

console.log(isEmpty(null)) // true console.log(isEmpty(undefined)) // true console.log(isEmpty({})) // true console.log(isEmpty({ nome: "Matheus" })) // false

Com esse if no começo tu trata null e undefined como vazio e não corre risco do código explodir em produção

Como verificar se o objeto NÃO está vazio:

Muita vez o que tu quer é o contrário, saber se o objeto TEM alguma coisa dentro

A boa notícia é que não precisa de função nova, é só negar o resultado

function isNotEmpty(obj) { return Object.keys(obj).length > 0 }

console.log(isNotEmpty({ nome: "Matheus" })) // true console.log(isNotEmpty({})) // false

Ou, se já tiver a função isEmpty pronta, dá pra usar o ! na frente e reaproveitar tudo

if (!isEmpty(usuario)) { // faz algo com o objeto preenchido }

Perguntas frequentes

Object.keys funciona pra checar array vazio também?

Funciona, mas tem pegadinha

Agora aquela checagem de obj.constructor === Object vai dar false num array, porque o constructor dele é Array e não Object

Então pra array, o mais direto é usar array.length === 0 mesmo

Qual das duas abordagens eu uso?

Se você precisa rodar em navegador mais antigo, a primeira abordagem (com hasOwnProperty) é a mais segura

Se é Node, TypeScript ou navegador atual, a versão com Object.keys é mais limpa e faz o mesmo trabalho

Dá pra usar em objeto vindo de JSON.parse?

Dá tranquilo

O retorno do JSON.parse é um objeto comum, então as duas abordagens funcionam nele sem ajuste nenhum

Leia também

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares