Estoy tratando de calcular los pies cuadrados sobre la marcha a partir de las dimensiones en una cadena de texto (para poder pasar el total a un campo de formulario oculto). Las cadenas se extraen de la base de datos cuando se agrega un producto a una lista dentro del formulario, y las dimensiones siempre reflejan alto x ancho, pero la salida puede variar si se incluyen pulgadas y pies:
10'x20' // 10 feet x 20 feet = 200 square feet 10'6x20' // 10 feet 6 inches x 20 feet = 210 square feet 8'x15'10 // 8 feet x 15 feet 10 inches = 126.67 square feetEstoy pensando que el mejor enfoque es usar jQuery o JavaScript para convertir todo a pulgadas, hacer el cálculo y luego dividir por 12 para obtener pies cuadrados, pero no sé cómo hacer que funcione con un patrón de cadena inconsistente.
¿Alguna sugerencia sobre cómo lograr esto? En caso de que ayude, estoy completando la lista al hacer clic en el botón y pasando la cadena en un atributo de "ancho de datos".
digamos que la conversión de pulgadas cuadradas a pies cuadrados es fácil y es cierta.
Puede usar esta fórmula para hacerlo: square_foot = (square_inches / 144)
para la conversión, puede usar JavaScript simple, ya que solo necesita dividir la cadena para obtener la parte de pies y pulgadas
// possible numbers const num1 = "5'10"; const num2 = "6'0"; const num3 = "0'10"; const num4 = "5"; const num5 = "10'"; const changeFootToInches = (numberString) => { let [foot, inches] = numberString.split("'"); // if inches is undefined means numberString is num4 // and num4 contains only inches so swap these values if (inches === undefined) { inches = foot; foot = 0; } return (+(foot || 0) * 12 + +(inches || 0)); // use toFixed(limit) to use restrict the floating points }; const getAreaInSquareFoot = (num1, num2) => { const inchesNum1 = changeFootToInches(num1); const inchesNum2 = changeFootToInches(num2); return ((inchesNum1 * inchesNum2) / 144); } console.log(getAreaInSquareFoot(num1, num2)); console.log(getAreaInSquareFoot(num1, num3)); console.log(getAreaInSquareFoot(num1, num4)); console.log(getAreaInSquareFoot(num1, num5)); console.log(getAreaInSquareFoot(num1, num5)); console.log(getAreaInSquareFoot(num2, num4)); console.log(getAreaInSquareFoot(num3, num4)); console.log(getAreaInSquareFoot(num3, num5));Espero que encuentres esto útil :)