Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
El filtro de matriz de Javascript parece funcionar, pero no se imprime en la pantalla
  1. Se agregan 4 años a la matriz (2001, 1999, 2000 y 2002)
  2. La matriz está impresa en la pantalla, mostrando los mismos 4 años.
  3. El año máximo se calcula como 2002
  4. El año 2002 se elimina de la matriz.
  5. La matriz está impresa en la pantalla, pero aún muestra 4 años.
  6. Sin embargo, el año máximo se calcula como 2001, lo que indica que 2002 en realidad se eliminó

¿Que esta pasando?

 const output = document.getElementById('output'); function handleYears() { let years = []; let addYear = function(newYear) { years.push(newYear); } let deleteYear = function(yearToDelete) { years = years.filter(item => item !== yearToDelete) } let calculateMaxYear = function() { return Math.max(...years); } return { years: years, addYear: addYear, deleteYear: deleteYear, calculateMaxYear: calculateMaxYear } } let newHandleYears = handleYears(); newHandleYears.addYear(2001); newHandleYears.addYear(1999); newHandleYears.addYear(2000); newHandleYears.addYear(2002); output.innerHTML += `<p>Years: ${newHandleYears.years}</p>`; output.innerHTML += `<p>Maximum year: ${newHandleYears.calculateMaxYear()}</p>`; output.innerHTML += `<p>Delete item "${newHandleYears.years[newHandleYears.years.length - 1]}" from "years" array.</p>`; newHandleYears.deleteYear(2002); output.innerHTML += `<p>Years: ${newHandleYears.years}</p>`; output.innerHTML += `<p>Maximum year: ${newHandleYears.calculateMaxYear()}</p>`;
 body {padding: 0.5rem 1rem;}
 <div id="output"></div>

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Debe agregar this palabra clave porque está reasignando valor y no tiene que hacerlo de forma automática, ya que está llamando a la misma referencia y presionándola.

 const output = document.getElementById('output'); function handleYears() { let years = []; let addYear = function(newYear) { years.push(newYear); } let deleteYear = function(yearToDelete) { this.years = years.filter(item => item !== yearToDelete) } let calculateMaxYear = function() { return Math.max(...this.years); } return { years: years, addYear: addYear, deleteYear: deleteYear, calculateMaxYear: calculateMaxYear } } let newHandleYears = handleYears(); newHandleYears.addYear(2001); newHandleYears.addYear(1999); newHandleYears.addYear(2000); newHandleYears.addYear(2002); output.innerHTML += `<p>Years: ${newHandleYears.years}</p>`; output.innerHTML += `<p>Maximum year: ${newHandleYears.calculateMaxYear()}</p>`; output.innerHTML += `<p>Delete item "${newHandleYears.years[newHandleYears.years.length - 1]}" from "years" array.</p>`; newHandleYears.deleteYear(2002); output.innerHTML += `<p>Years: ${newHandleYears.years}</p>`; output.innerHTML += `<p>Maximum year: ${newHandleYears.calculateMaxYear()}</p>`;
 body {padding: 0.5rem 1rem;}
 <div id="output"></div>

about 4 years ago · Santiago Trujillo Denunciar

0

Después de eliminar un año, el objeto newHandleYears no se inicializa con el valor del years nuevo, conserva el anterior. Puede hacer otro getter durante years para obtener el valor actualizado:

 const output = document.getElementById('output'); function handleYears() { let years = []; let addYear = (newYear) => { years.push(newYear); } let deleteYear = (yearToDelete) => { years = years.filter(item => item !== yearToDelete) } let calculateMaxYear = () => { return Math.max(...years); } let getYears = () => { return years } return { getYears: getYears, addYear: addYear, deleteYear: deleteYear, calculateMaxYear: calculateMaxYear } } let newHandleYears = handleYears(); newHandleYears.addYear(2001); newHandleYears.addYear(1999); newHandleYears.addYear(2000); newHandleYears.addYear(2002); output.innerHTML += `<p>Years: ${newHandleYears.getYears()}</p>`; output.innerHTML += `<p>Maximum year: ${newHandleYears.calculateMaxYear()}</p>`; output.innerHTML += `<p>Delete item "${newHandleYears.getYears()[newHandleYears.getYears().length - 1]}" from "years" array.</p>`; newHandleYears.deleteYear(2002); output.innerHTML += `<p>Years: ${newHandleYears.getYears()}</p>`; output.innerHTML += `<p>Maximum year: ${newHandleYears.calculateMaxYear()}</p>`;
 body {padding: 0.5rem 1rem;}
 <div id="output"></div>

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda