Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

201
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!