Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

240
Visualizações
TypeError no detectado: yearsList no está definido

Estoy tratando de escribir una pieza de código javascript en un proyecto de reacción. Tengo un componente "gastos" al que se le han pasado algunos datos por props. data es una matriz de algunos objetos. aquí está mi código: los datos:

 const EXPENSES = [ { id: "e1", date: "March 2021 12", description: "New TV", price: "$780" }, { id: "e2", date: "April 2020 19", description: "basket", price: "$860" }, { id: "e3", date: "June 2021 08", description: "Laptop", price: "$59" }, ];

y dentro de mi componente de gastos:

 const yearsList = props.data.map((item) => item.date.split(" ")[1]); console.log(yearsList); //it prints ["2021" , "2020" , 2021] as expected const finalYearsList = (yearsList) => { var temp = []; var j = 0; for (let i = 0; i < yearsList.length; i++) { //this line: Uncaught TypeError: yearsList is undefined if (temp.includes(yearsList[i])) { continue; } else { temp[j++] = yearsList[i]; } } return temp.sort(); };

Quiero tener todos los años no repetidos en mi constante finalYearList, pero me da un error en la consola que indica que Uncaught TypeError: yearsList no está definido. Soy un poco nuevo en el mundo de javascript. gracias de antemano.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Está sombreando la variable yearsList que declara en la línea 1 con el parámetro yearsList en la línea 4.

Puede cambiar su código de dos maneras:

  1. Elimine el parámetro en la línea 4, por lo que su declaración de función es
 const finalYearsList = () => { ... }
  1. Pase la lista de años como un parámetro cuando llame finalYearsList la función yearsList
 const yearsList = props.data.map( ... ); const finalYearsList = (yearsList) => { ... } finalYearsList(yearsList);

Una recomendación que haría si elige la opción número 2 es cambiar el nombre de la variable o el parámetro y evitar este sombreado por completo, ya que causa confusión (como ha visto).

about 4 years ago · Juan Pablo Isaza Relatório

0

Si quiere usar su lista de años en la función lista de años final, no tiene que pasarla como argumento. En su código actual, está declarando un parámetro con el nombre Lista de años y, por lo tanto, sobrescribe la Lista de años original.

¡Su lista de años original se define en el ámbito global y, por lo tanto, es accesible dentro de cada función!

Así que solo usa...

 const yearsList = props.data.map((item) => item.date.split(" ")[1]); console.log(yearsList); //it prints ["2021" , "2020" , 2021] as expected const finalYearsList = () => { var temp = []; var j = 0; for (let i = 0; i < yearsList.length; i++) { //this line: Uncaught TypeError: yearsList is undefined if (temp.includes(yearsList[i])) { continue; } else { temp[j++] = yearsList[i]; } } return temp.sort(); };

...en cambio.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda