Sí, verás:
En mi primer script, que lo hace todo el solito, no es complementario al de karlankas:
Código PHP:
var nos=["4.532,234","55,56002","541.867,078"];
function formato_PC(n) {
return Number( n.replace(/./g,"").replace(/,/g,".") );
}
function formato_HUM(n) {
n=String(n).split("."); //el entero es n[0] y la parte decimal es n[1]
n[0]=n[0].split("").reverse().join(""); //le damos la vuelta, asi podemos tocarlo desde atras sin complicaciones
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1.");
//ver comentario abajo
n[0]=n[0].split("").reverse().join(""); //lo reestablecemos a su orden original
return n.join(","); //unimos la parte entera con la decimal
}
function suma(arr) {
var total=0;
for(var i=0;i<arr.length;i++)
total+=formato_PC(arr[i]);
return formato_HUM(total);
}
document.write( suma(nos) );
que es igual al último sólo que sin ahorrar código, utilizo lo que tú has posteado:
vfactura = vfact.replace(/\./g,'');
vfacturado = vfactura.replace(/\,/g,'.');
pero en una sola línea:
Number( n.replace(/./g,"").replace(/,/g,".") );
La función formato_PC transforma un número ##.###.###,## en ########.##, formato en el cual javascript puede operar. Además devuelve ya transformado en el tipo Number, con lo cual ninguna restricción.
La función formato_HUM transforma un número de formato_PC ########.## a formato "humano", es decir, al original ##.###.###,##
La función suma no sé si te interesa, es para sumar todos los números del array si están en formato_PC, no tiene mayor complicación.
Si deseas que funcione al revés (es decir, no ##.###,## sino ##,###.##) únicamente deberás cambiar estas líneas en formato_hum:
Código PHP:
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1.");
por
Código PHP:
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1,"); //lo mismo pero con , después de $1
y la línea que une a los grupos de entero y decimal, ésta:
Código PHP:
return n.join(",");
por
Código PHP:
return n.join(".");
Luego podrías mejor currarte unos argumentos para formato_hum para andarte con menos complicaciones ¿no?
Si no entiendes alguna expresion regular y estás interesado y no puedes encontrar información vuelve a preguntar sin problemas.