Saludos a todo tengo la siguiente función en PHP
function precio_dot($price, $sep='.') {
//Devuelve el valor coma separada
if ($sep=='') { $sep='.'; }
$price = strrev($price);
$c_name = str_split($price, 1);
$n_name = '';
$i = 0;
foreach ($c_name as $word) {
if ((($i % 3)==0)&&($i>0)) {
$n_name .= $sep;
}
$n_name .= $word;
$i += 1;
}
return strrev($n_name);
}
Hasta ahí todo bien :D pero mi problema viene querer pasarla a javascript lo intente de esta manera pero no lo he conseguido
function strrev(s){ return s.split('').reverse().join(''); }
function precio_js($price, $sep='.') {
//Devuelve el valor coma separada
if (sep=='') { sep = '.'; }
price = strrev(price);
c_name =str.split(price,1);
n_name = '';
var i = 0;
for(i;i<=c_name.length;i++){
if(((i % 3)==0) && (i>0)){
n_name = name+"."+sep;
} //fin If
}
return strrev(n_name);
}
Alguien sabe cual es el problema? de antemano gracias.
No estoy muy seguro del funcionamiento pero los argumentos de la función precio_js están mal. No puedes usar esa manera para establecer los valores por defecto de los argumentos.
Una manera muy sencilla de hacer esto sería:
function precio_js(price, sep){
sep = sep || '.';
}
El único inconveniente es que si estás pasando valores false por sep entonces se ponen valores por default.
Valores false en javascript:
"undefined", null, NaN, 0, ""
Si alguna vez pasas esos valores por sep, sep va a tomar el '.' en lugar de ese valor.
str_split de php es diferente a str.split de javascript. str_split convierte el string en un arreglo donde cada elemento es de longitud del segundo parametro (1). Mientras que str.split, funciona como php explode. Puedes usar:
str.split("");
Forza a javascript a romper el string en caracteres.
Y si estás pasando valores falsey atraves de sep tienes que usar algo como esto:
sep = typeof sep !== 'undefined' ? sep : '.';