'''
const temperatures = ['error',3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5]; const calcTempAmplitide = function (temp) { let maxTemp = temp[0]; let minTemp = temp[0]; for (let i = 0; i < temp.length; i++) { const current_temp = temp[i]; if (typeof current_temp !== 'number') continue; if (current_temp > maxTemp) maxTemp = current_temp; if (current_temp < minTemp) minTemp = current_temp; } return maxTemp - minTemp; }; const amplitude = calcTempAmplitide(temperatures); console.log(amplitude);'''
Después de ejecutar esto en el código Visual, obtengo un valor de NaN si elimino el 'error' desde el principio, entonces el código funciona. Cualquier solución para esto
let maxTemp = temp[0]; let minTemp = temp[0];significa que si la matriz no comienza con un número, las comparaciones no tendrán sentido (y la resta al final tampoco funcionará).
¿Qué hay de filtrar la matriz para eliminar primero los números que no son números?
const temperatures = ['error',3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5]; const calcTempAmplitide = function (temp) { const nums = temp.filter(val => typeof val === 'number'); let maxTemp = nums[0]; let minTemp = nums[0]; for (let i = 0; i < nums.length; i++) { const current_temp = nums[i]; if (current_temp > maxTemp) maxTemp = current_temp; if (current_temp < minTemp) minTemp = current_temp; } return maxTemp - minTemp; }; const amplitude = calcTempAmplitide(temperatures); console.log(amplitude);o
const temperatures = ['error',3, -2, -6, -1, 'error', 9, 13, 17, 15, 14, 9, 5]; const calcTempAmplitide = function (temp) { const nums = temp.filter(val => typeof val === 'number'); return Math.max(...nums) - Math.min(...nums); }; const amplitude = calcTempAmplitide(temperatures); console.log(amplitude);