Como saber se um objeto está vazio?
sobes.tech IA
Resposta da IA
Um objeto é considerado "vazio" se não tiver propriedades enumeráveis próprias.
Formas de verificar:
-
Object.keys(): Retorna um array de strings representando os nomes das propriedades enumeráveis próprias do objeto. Se o array estiver vazio, o objeto está vazio.const myObject = {}; if (Object.keys(myObject).length === 0) { // Objeto vazio } -
for...inehasOwnProperty(): Itera sobre as propriedades enumeráveis do objeto (incluindo as herdadas) e verifica se a propriedade é própria.const myObject = {}; let isEmpty = true; for (const key in myObject) { if (Object.prototype.hasOwnProperty.call(myObject, key)) { isEmpty = false; break; } } if (isEmpty) { // Objeto vazio }Object.prototype.hasOwnProperty.call()é usado para uma verificação mais segura, poishasOwnPropertypode ter sido sobrescrito no objeto. -
JSON.stringify(): Converte o objeto em uma string JSON. Um objeto vazio{}é convertido na string"{}"const myObject = {}; if (JSON.stringify(myObject) === '{}') { // Objeto vazio }Este método é adequado para objetos simples sem funções e ligações circulares.
-
Object.getOwnPropertyNames(): Retorna um array de todas as propriedades próprias (não herdadas), enumeráveis e não enumeráveis (incluindo símbolos).const myObject = {}; if (Object.getOwnPropertyNames(myObject).length === 0) { // Objeto vazio } -
Object.getOwnPropertySymbols(): Retorna um array de todas as propriedades simbólicas próprias do objeto. Se o objeto estiver vazio (e não tiver propriedades simbólicas), esse array será vazio.const myObject = {}; if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) { // Objeto vazio, incluindo propriedades simbólicas }
A escolha do método depende do contexto e dos requisitos de desempenho. Object.keys() e JSON.stringify() geralmente são os mais rápidos e concisos para casos simples. Para considerar todos os tipos de propriedades e herdadas, podem ser necessárias verificações adicionais.