"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > [Leetcode] O objeto está vazio

[Leetcode] O objeto está vazio

Publicado em 2024-11-04
Navegar:590

[Leetcode] Is Object Empty

Link da pergunta: https://leetcode.com/problems/is-object-empty/description/

[Declaração do problema]

Dado um objeto ou array, retorne se estiver vazio.

  • Um objeto vazio não contém pares de valores-chave.
  • Uma matriz vazia não contém elementos.

Você pode assumir que o objeto ou array é a saída de JSON.parse.

[Pergunta de compreensão]

  1. 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!)

  2. 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.

  3. Finalmente, precisamos verificar se este objeto/array está vazio ou não. Simples, certo? (Ou é...)

[Pontos-chave]

  1. 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!

  2. 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).

  3. 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!

  4. É 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.

[Código da Solução]

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
};

[Decompondo... ainda mais]

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.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/luvsense/leetcode-2727-is-object-empty-5h8k?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

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