Soy nuevo en reaccionar y, como práctica, estoy creando una aplicación de reacción. El formulario tiene una entrada de duración que espera los datos en minutos u horas, por ejemplo. 132m o 2,5h. La función debe devolver la cantidad de horas según la entrada o mostrar un error en la alerta de que "La duración tiene un formato no válido".
¿Cómo puedo hacer esto? El valor es una cadena, por lo que estaba pensando en usar duration.includes('m') o duration.includes('h') pero el problema es que aceptará "1h32", por ejemplo. También quiero saber cómo se puede extraer el flotador de la cadena.
Sugeriría usar una expresión regular para analizar los números de la entrada dada. A continuación, debe convertir las cadenas en un número. Por último, pase el resultado a una función de cálculo para convertir minutos a horas
const input = '132m'; // const input = '2.5h' // const input = '1h32'; function parseDuration(input) { const { groups } = input.match(/((?<hours>\d+(\.\d+)?)h)?((?<minutes>\d+)m?)?/); const hours = Number(groups.hours) || 0; const minutes = Number(groups.minutes) || 0; return { hours, minutes, }; } function durationToHours(hours, minutes) { return hours + minutes / 60; } const parsedDuration = parseDuration(input); const hours = durationToHours(parsedDuration.hours, parsedDuration.minutes); hours; // 2.2