Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: blaknez root en 27 Julio 2014, 17:27 pm



Título: Pasar funcion PHP a javascript
Publicado por: blaknez root en 27 Julio 2014, 17:27 pm
Saludos a todo tengo la siguiente función en PHP
Código
  1. function precio_dot($price, $sep='.') {
  2.    //Devuelve el valor coma separada
  3.    if ($sep=='') { $sep='.'; }
  4.    $price = strrev($price);
  5.    $c_name = str_split($price, 1);
  6.    $n_name = '';
  7.    $i = 0;
  8.    foreach ($c_name as $word) {
  9.      if ((($i % 3)==0)&&($i>0)) {
  10.        $n_name .= $sep;
  11.      }
  12.      $n_name .= $word;
  13.      $i += 1;
  14.    }
  15.    return strrev($n_name);
  16.  }
Hasta ahí todo bien :D pero mi problema viene querer pasarla a javascript lo intente de esta manera pero no lo he conseguido

Código
  1. function strrev(s){ return s.split('').reverse().join(''); }
  2.  
  3. function precio_js($price, $sep='.') {
  4. //Devuelve el valor coma separada
  5. if (sep=='') { sep = '.'; }
  6. price = strrev(price);
  7. c_name =str.split(price,1);
  8. n_name = '';
  9.    var i = 0;
  10.  
  11. for(i;i<=c_name.length;i++){
  12. if(((i % 3)==0) && (i>0)){
  13. n_name = name+"."+sep;
  14.  
  15. } //fin If
  16. }
  17.  
  18. return strrev(n_name);
  19. }


Alguien sabe cual es el problema? de antemano gracias.



Título: Re: Pasar funcion PHP a javascript
Publicado por: MinusFour en 27 Julio 2014, 18:41 pm
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:

Código
  1. function precio_js(price, sep){
  2. sep = sep || '.';
  3. }

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:

Código
  1. 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:

Código
  1. sep = typeof sep !== 'undefined' ? sep : '.';