Eliminar una propiedad de un objeto JavaScript: 3 enfoques y dificultades

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

«La propiedad desapareció, pero el objeto se quedó»: ¿cómo eliminar lo innecesario en JavaScript?

\n\n

Imagine la situación: está trabajando con un objeto grande que llegó del servidor. Tiene 20 campos, pero para enviar el formulario solo necesita 15. O está escribiendo una función que debe devolver datos sin el campo de servicio _id. ¿Qué hacer? La pregunta más popular en Stack Overflow sobre este tema ha obtenido cientos de miles de visitas, y no es casualidad.

\n\n

Eliminar una propiedad de un objeto es una de esas tareas que parece trivial, pero esconde varias sorpresas. En este artículo, analizaremos todas las formas principales de eliminar una propiedad de un objeto en JavaScript, compararemos su rendimiento y mutabilidad, y descubriremos qué enfoque elegir en 2025.

\n\n

Método n.º 1: El operador delete — el clásico del género

\n\n

La forma más obvia e históricamente primera es usar el operador delete. Elimina la propiedad del objeto de forma definitiva e irrevocable.

\n\n
const user = {\n  name: 'Ana',\n  email: 'anna@example.com',\n  password: 'super_secret_123'\n};\n\ndelete user.password;\n\nconsole.log(user);\n// { name: 'Ana', email: 'anna@example.com' }\nconsole.log(user.password); // undefined\n
\n\n

¿Cómo funciona realmente delete?

\n\n

El operador delete no solo asigna undefined. Elimina completamente la propiedad del objeto. Puede comprobarlo con el método hasOwnProperty:

\n\n
const car = { brand: 'Tesla' };\nconsole.log(car.hasOwnProperty('brand')); // true\n\ndelete car.brand;\nconsole.log(car.hasOwnProperty('brand')); // false\n
\n\n

Una diferencia importante: después de delete, la propiedad deja de existir. Al iterar con for...in u Object.keys(), no aparecerá.

\n\n

¿Cuándo no funcionará delete?

\n\n

Hay varias «dificultades»:

\n\n
    \n
  • No se pueden eliminar propiedades declaradas con var/let/const. El operador delete solo funciona con propiedades de objetos.
  • \n
  • No se eliminan las propiedades heredadas del prototipo, solo las propias.
  • \n
  • Las propiedades con la bandera configurable: false (por ejemplo, en objetos integrados) no se eliminan. En modo estricto, esto provocará un error.
  • \n
\n\n
// Ejemplo: propiedad con configurable: false\nconst obj = {};\nObject.defineProperty(obj, 'fixed', {\n  value: 42,\n  configurable: false\n});\n\ndelete obj.fixed; // false (no se eliminó)\nconsole.log(obj.fixed); // 42\n
\n\n

Método n.º 2: Desestructuración y operador rest — el enfoque moderno

\n\n

Si trabaja con datos inmutables (y en JavaScript moderno esto se considera una buena práctica), entonces delete puede no ser la mejor opción: muta el objeto original. La alternativa es crear un nuevo objeto sin la propiedad no deseada usando la desestructuración:

\n\n
const user = {\n  name: 'Iván',\n  email: 'ivan@example.com',\n  role: 'admin',\n  token: 'abc123'\n};\n\n// Eliminamos el campo token, creando un nuevo objeto\nconst { token, ...userWithoutToken } = user;\n\nconsole.log(userWithoutToken);\n// { name: 'Iván', email: 'ivan@example.com', role: 'admin' }\nconsole.log(user.token); // 'abc123' — ¡el objeto original no se ha tocado!\n
\n\n

Este enfoque es especialmente popular en el desarrollo con React, cuando necesita pasar solo una parte de las props a un componente, excluyendo los campos de servicio.

\n\n

Ventajas y desventajas de la desestructuración

\n\n
    \n
  • + Inmutabilidad: el objeto original permanece sin cambios. Esto es importante para Redux, Vuex y la programación funcional.
  • \n
  • + Legibilidad: se ve claramente qué campos estamos excluyendo.
  • \n
  • - Rendimiento: se crea una copia del objeto, lo que para objetos grandes puede ser costoso.
  • \n
  • - Incómodo para eliminar muchas propiedades: si necesita quitar 5 campos de 20,

Blogs

Book Recommendations