Quiero eliminar las comas de la cadena y calcular esa cantidad usando JavaScript.
Por ejemplo, tengo esos dos valores:
- 100.000,00
- 500.000,00
Ahora quiero quitar las comas de esa cadena y quiero el total de esa cantidad.
javascript
Kanak Vaghela
fuente
fuente
replace
yparseFloat
. aquí hay un caso de prueba rápido: jsfiddle.net/TtYpHRespuesta relacionada, pero si desea ejecutar la limpieza de un usuario ingresando valores en un formulario, esto es lo que puede hacer:
const numFormatter = new Intl.NumberFormat('en-US', { style: "decimal", maximumFractionDigits: 2 }) // Good Inputs parseFloat(numFormatter.format('1234').replace(/,/g,"")) // 1234 parseFloat(numFormatter.format('123').replace(/,/g,"")) // 123 // 3rd decimal place rounds to nearest parseFloat(numFormatter.format('1234.233').replace(/,/g,"")); // 1234.23 parseFloat(numFormatter.format('1234.239').replace(/,/g,"")); // 1234.24 // Bad Inputs parseFloat(numFormatter.format('1234.233a').replace(/,/g,"")); // NaN parseFloat(numFormatter.format('$1234.23').replace(/,/g,"")); // NaN // Edge Cases parseFloat(numFormatter.format(true).replace(/,/g,"")) // 1 parseFloat(numFormatter.format(false).replace(/,/g,"")) // 0 parseFloat(numFormatter.format(NaN).replace(/,/g,"")) // NaN
Utilice la fecha internacional local vía
format
. Esto limpia cualquier entrada incorrecta, si hay una, devuelve una cadenaNaN
que puede verificar. Actualmente no hay forma de eliminar las comas como parte de la configuración regional (a partir del 12/10/19) , por lo que puede usar un comando regex para eliminar las comas usandoreplace
.ParseFloat
convierte la definición de este tipo de cadena en númeroSi usa React, así es como podría verse su función de cálculo:
updateCalculationInput = (e) => { let value; value = numFormatter.format(e.target.value); // 123,456.78 - 3rd decimal rounds to nearest number as expected if(value === 'NaN') return; // locale returns string of NaN if fail value = value.replace(/,/g, ""); // remove commas value = parseFloat(value); // now parse to float should always be clean input // Do the actual math and setState calls here }
fuente