Quite las comas de la cadena usando JavaScript

97

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.

Kanak Vaghela
fuente

Respuestas:

172

Para eliminar las comas, deberá usar replaceen la cadena. Para convertir a flotante y poder hacer los cálculos, necesitará parseFloat:

var total = parseFloat('100,000.00'.replace(/,/g, '')) +
            parseFloat('500,000.00'.replace(/,/g, ''));
día solitario
fuente
3
Sí, necesito combinar replacey parseFloat. aquí hay un caso de prueba rápido: jsfiddle.net/TtYpH
Shadow Wizard es Ear For You
1
Es 2017, ¿no hay forma de ir y volver de una cadena de configuración regional? ¿Cómo revierte esta función? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… . Publicado una pregunta separada aquí: stackoverflow.com/questions/41905406/…
Costa
4

Respuesta 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 cadena NaNque 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 usando replace.

ParseFloat convierte la definición de este tipo de cadena en número

Si 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
}
Vincent Tang
fuente