Link da pergunta: https://leetcode.com/problems/is-object-empty/description/
Dado um objeto ou array, retorne se estiver vazio.
Você pode assumir que o objeto ou array é a saída de JSON.parse.
Então... estamos obtendo um Array ou um Object como parâmetro para esta função chamada obj. (Sim, eu sei, nome super criativo, mas fará sentido mais tarde!)
Nossa tarefa? Execute alguns truques mágicos de codificação para primeiro descobrir se este objeto é um array ou um objeto. Então, com base nesse conhecimento, decidiremos o que fazer a seguir.
Finalmente, precisamos verificar se este objeto/array está vazio ou não. Simples, certo? (Ou é...)
Primeiras coisas primeiro: "Um array é tecnicamente um objeto em JavaScript." Sim! É isso mesmo: arrays são um tipo especial de objeto em JS. Então, não se confunda!
Detecção de objeto 101: Podemos verificar se o parâmetro é realmente um objeto (ou array) usando typeof obj === 'object' && obj !== null. Por que a parte !== nula? Bem, porque null é um caso especial em JS. Mesmo sendo tecnicamente do tipo objeto, é como o vazio do nada. Portanto, excluímos isso, por precaução (mesmo que o problema não o mencione explicitamente, é um bom hábito).
Elementos indefinidos e nulos: Tanto objetos quanto arrays podem ter propriedades/elementos indefinidos ou nulos. Mas não se preocupe – eles ainda contarão quando verificarmos o comprimento. Eles não recebem passe livre com nossa validação!
É um Array?: Podemos verificar se o parâmetro é um array usando Array.isArray(obj). Não há necessidade de verificar novamente se é um objeto - já fizemos isso antes.
var isEmpty = function (obj) { if (typeof obj === "object" && obj !== null) { // Check if it's an object and not null if (Array.isArray(obj)) { // If it's an array return obj.length === 0; // Return true if it's empty } else { // If it's an object return Object.keys(obj).length === 0; // Return true if there are no keys } } return false; // If it's neither an object nor an array, return false };
Etapa 1: verifique se é um objeto
Primeiro, usamos typeof obj === 'object' && obj !== null para garantir que a entrada seja um objeto e não nula. (Porque todos nós sabemos que typeof null === 'object é uma das peculiaridades estranhas do JavaScript. Obrigado, JavaScript!)
Etapa 2: é uma matriz?
Usamos Array.isArray(obj) para distinguir entre arrays e objetos regulares. Matrizes têm uma propriedade length, então podemos verificar diretamente se obj.length === 0.
Etapa 3: É um objeto?
Se não for um array, verificamos se é um objeto usando Object.keys(obj).length === 0. Este método retorna o número de chaves no objeto. Sem chaves? Está vazio!
Etapa 4: caixa padrão
Se a entrada não for um objeto (ou for nula), retornaremos falso porque a pergunta especifica que estamos trabalhando apenas com objetos ou matrizes.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3