"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > [Leetcode] El objeto está vacío

[Leetcode] El objeto está vacío

Publicado el 2024-11-04
Navegar:859

[Leetcode] Is Object Empty

Enlace de pregunta: https://leetcode.com/problems/is-object-empty/description/

[Declaración del problema]

Dado un objeto o una matriz, devuelve si está vacío.

  • Un objeto vacío no contiene pares clave-valor.
  • Una matriz vacía no contiene elementos.

Puedes asumir que el objeto o matriz es el resultado de JSON.parse.

[Pregunta de comprensión]

  1. Muy bien... obtenemos una matriz o un objeto como parámetro para esta función llamada obj. (Sí, lo sé, nombre súper creativo, ¡pero tendrá sentido más adelante!)

  2. ¿Nuestra tarea? Realice algunos trucos mágicos de codificación para descubrir primero si este objeto es una matriz o un objeto. Luego, basándonos en ese conocimiento, decidiremos qué hacer a continuación.

  3. Finalmente, necesitamos verificar si este objeto/matriz está vacío o no. Sencillo, ¿verdad? (O es...)

[Puntos clave]

  1. Lo primero es lo primero: "Una matriz es técnicamente un objeto en JavaScript". ¡Sí! Así es, las matrices son un tipo especial de objeto en JS. Así que ¡no te confundas!

  2. Detección de objetos 101: Podemos verificar si el parámetro es realmente un objeto (o matriz) usando typeof obj === 'object' && obj !== null. ¿Por qué la parte !== nula? Bueno, porque nulo es un caso especial en JS. Aunque técnicamente es del tipo objeto, es como el vacío de la nada. Así que lo excluimos, por si acaso (aunque el problema no lo mencione explícitamente, es un buen hábito).

  3. Elementos indefinidos y nulos: Tanto los objetos como las matrices pueden tener propiedades/elementos que no están definidos o son nulos. Pero no te preocupes: seguirán contando cuando comprobemos la longitud. ¡No obtienen un pase gratuito de nuestra validación!

  4. ¿Es una matriz?: Podemos verificar si el parámetro es una matriz usando Array.isArray(obj). Sin embargo, no es necesario volver a comprobar si se trata de un objeto; ya lo hicimos antes.

[Código de solución]

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

[Desglosándolo... aún más]

Paso 1: Verifica si es un objeto
Primero, usamos typeof obj === 'object' && obj !== null para asegurarnos de que la entrada sea un objeto y no nula. (Porque todos sabemos que el objeto typeof null === 'es una de las peculiaridades extrañas de JavaScript. ¡Gracias, JavaScript!)

Paso 2: ¿Es una matriz?
Usamos Array.isArray(obj) para distinguir entre matrices y objetos regulares. Las matrices tienen una propiedad de longitud, por lo que podemos verificar directamente si obj.length === 0.

Paso 3: ¿Es un objeto?
Si no es una matriz, verificamos si es un objeto usando Object.keys(obj).length === 0. Este método devuelve el número de claves en el objeto. ¿Sin llaves? ¡Está vacío!

Paso 4: Caso predeterminado
Si la entrada no es un objeto (o es nula), devolvemos falso porque la pregunta especifica que estamos trabajando solo con objetos o matrices.

Declaración de liberación Este artículo se reproduce en: https://dev.to/luvsense/leetcode-2727-is-object-empty-5h8k?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3