Home > front end >  main.js:500 Uncaught TypeError: X.push is not a function
main.js:500 Uncaught TypeError: X.push is not a function

Time:01-13

I am trying to pass an array to a function, and later on doing a .push to that function, but it gives me an error: "main.js:500 Uncaught TypeError: arrayTemperaturaPotTemp.push is not a function"

First of all, Im inside a function, where I declare all variables, but the importants are:

let arrayTiempo = new Array, arrayTemperatura = new Array, arrayTiempoPot = new Array, arrayPotencia = new Array, arrayTemperaturaPotTemp = new Array, arrayPotenciaPotTemp = new Array;

And now I call a function to which I pass the next data:

iniciarGraficos(arrayTiempo, arrayTemperatura, temperature, pos, subcadena, ocurrencias, tiempo, valor, valorMedio, ultimaHora, ultimaTemp,
arrayTiempoPot, arrayPotencia, energy, posEner, subcadena, ocurrenciasEner, tiempoEner, potencia, potenciaTotal, ultimaHoraEnerTiemp, ultimaEnerEnerTiemp,
ultimaHoraEnerTemp, ultimaEnerEnerTemp, ultimaTempEnerTemp, arrayTemperaturaPotTemp, arrayPotenciaPotTemp, valor, potencia);

Inside this method, I don't use "arrayTemperaturaPotTemp" yet, but I pass it to another method:

function iniciarGraficos(arrayTiempo, arrayTemperatura, temperature, pos, subcadena, ocurrencias, tiempo, valor, valorMedio, ultimaHora, ultimaTemp,
  arrayTiempoPot, arrayPotencia, energy, posEner, ocurrenciasEner, tiempoEner, potencia, potenciaTotal, ultimaHoraEnerTiemp, ultimaEnerEnerTiemp,
  ultimaHoraEnerTemp, ultimaEnerEnerTemp, ultimaTempEnerTemp, arrayTemperaturaPotTemp, arrayPotenciaPotTemp){

if ((pos = temperature.indexOf(subcadena, pos)) !== -1) {...}

if ((posEner = energy.indexOf(subcadena, posEner)) !== -1) {...}

actualizarGrafico3(arrayTemperaturaPotTemp, arrayPotenciaPotTemp, valor, potencia, "MiGraficaEnerTemp", 50_000, 72_000);
}

And now, when it reaches the function "actualizarGrafico3", that has the next content:

    function actualizarGrafico3(arrayTemperaturaPotTemp, arrayPotenciaPotTemp, valor, potencia, nombreGrafica, min, max){
             arrayTemperaturaPotTemp.push(valor);
             arrayPotenciaPotTemp.push(potencia);
    }

CodePudding user response:

There are some differences between arguments you pass and arguments which the function awaits.

You pass arrayTemperaturaPotTemp in 26 place:

iniciarGraficos(
  arrayTiempo, 
  arrayTemperatura, 
  temperature, 
  pos, 
  subcadena, 
  ocurrencias, 
  tiempo, 
  valor, 
  valorMedio,
  ultimaHora, 
  ultimaTemp,
  arrayTiempoPot, 
  arrayPotencia, 
  energy, 
  posEner, 
  subcadena, 
  ocurrenciasEner, 
  tiempoEner, 
  potencia, 
  potenciaTotal, 
  ultimaHoraEnerTiemp, 
  ultimaEnerEnerTiemp,
  ultimaHoraEnerTemp, 
  ultimaEnerEnerTemp, 
  ultimaTempEnerTemp, 
  arrayTemperaturaPotTemp, 
  arrayPotenciaPotTemp, 
  valor, 
  potencia);

The function waits arrayTemperaturaPotTemp in 25 place:

iniciarGraficos(
  arrayTiempo, 
  arrayTemperatura, 
  temperature, 
  pos, 
  subcadena, 
  ocurrencias, 
  tiempo, 
  valor, 
  valorMedio, 
  ultimaHora, 
  ultimaTemp,
  arrayTiempoPot, 
  arrayPotencia, 
  energy, 
  posEner, 
  ocurrenciasEner, 
  tiempoEner, 
  potencia, 
  potenciaTotal, 
  ultimaHoraEnerTiemp, 
  ultimaEnerEnerTiemp,
  ultimaHoraEnerTemp, 
  ultimaEnerEnerTemp, 
  ultimaTempEnerTemp, 
  arrayTemperaturaPotTemp,
  arrayPotenciaPotTemp)

Just try to avoid so long arguments list: really easy to make a mistake here. Instead of this use argument at least as an object.

  •  Tags:  
  • Related