// PROBLEM // We work for a company building a smart home thermometer. // Out most recent task is this: "Given an array of temperatures" // of one day, calculate the temperature amplitude. Keep in mind that somethimes // there might be a sensor error" const temperatures = [-3, -2, -6, -1, "error", 9, 13, 17, 15, 14, 9, 5]; const temperatures_doubled = [-3, -2, -6, -1, "error", 9, 13, 17, 15, 14, 9, 5]; // 1) Understanding the problem // - What is temperature amplitude? Answer: Difference between highest and lowest temperature // - How to compute max and min temperatures? // - What's a sensor error? And what to do? // 2) Breaking up into sub-problems // - How to ignore errors? // - Find max value in the array? // - Find min value in the array? // - Subtract min from max (amplitude) and return it const getMinTemp = function (temps) { let minTemp = temps[0]; for (let i = 0; i < temps.length; i++) { const currTemp = temps[i]; if (currTemp < minTemp) minTemp = currTemp; } return minTemp; }; const getMaxTemp = function (temps) { let maxTemp = temps[0]; for (let i = 0; i < temps.length; i++) { const currTemp = temps[i]; if (currTemp > maxTemp) maxTemp = currTemp; } return maxTemp; }; const getOnlyNumbers = function (temps) { let arrayOfNumbers = []; for (let i = 0; i < temps.length; i++) { const currTemp = temps[i]; if (typeof currTemp === "number") { arrayOfNumbers.push(currTemp); } } return arrayOfNumbers; }; const getAmplitude = function (temps) { const arrayOfTempsOnlyNumbers = getOnlyNumbers(temps); const maxTemp = getMaxTemp(arrayOfTempsOnlyNumbers); const minTemp = getMinTemp(arrayOfTempsOnlyNumbers); return Math.abs(minTemp) + maxTemp; }; console.log(getAmplitude(temperatures)); // PROBLEM 2 // Function should now receive 2 arrays of temps // 1) Understanding the problem // - With 2 arrays, should we implement functionality twice? // NO! Just merge two arrays // 2) Breaking up into sub-problems // - Merge 2 arrays const mergeArray = (temps1, temps2) => { const mergedArray = temps1; for (let i = 0; i < temps2.length; i++) { mergedArray.push(temps2[i]); } return mergedArray; }; const mergedArray = mergeArray(temperatures, temperatures_doubled); console.log(mergedArray);