var firstDefrost = "4.0"; function zero(zeroArray) { if (zeroArray[1] == undefined) { zeroArray[1] = 0; zeroArray[2] = ""; console.log("zero array 1 called") } else if (zeroArray[1] == ".") { zeroArray[1] = 0; zeroArray[2] = ""; /*I want it to return 40 not 4.0 which is what is happening */ console.log("zero array 2 called" + zeroArray) } return zeroArray; } firstDefrost = zero(firstDefrost);En el segundo bloque de código else if quiero que se devuelva el valor de 40 pero en su lugar devuelve 4.0 que no quiero.
De los casos en el OP, parece que el objetivo es tomar un número representado por un parámetro de cadena y devolver una cadena que represente ese número multiplicado por 10.
function zero(string) { return `${+string*10}` } console.log(zero("4.0")) console.log(zero("3"))Esto sucede porque cuando usa zeroArray[1] puede obtener el carácter en esa posición de la cadena, pero no puede asignar un nuevo valor como ese, necesita una matriz para realizar esta operación. Déjame editar tu código con algunos pequeños cambios:
var firstDefrost = "4.0"; function zero ( zeroArray ){ zeroArray = zeroArray.split(""); if(zeroArray[1] == undefined){ zeroArray[1] = "0"; zeroArray[2] = ""; console.log("zero array 1 called") } else if(zeroArray[1] == "."){ zeroArray[1] = "0"; zeroArray[2] = ""; /*I want it to return 40 not 4.0 which is what is happening */ console.log("zero array 2 called" + zeroArray) } return zeroArray.join(""); } firstDefrost = zero(firstDefrost);