Foros del Web » Programando para Internet » Javascript »

¿Elemento de texto de un Array como valor numérico?

Estas en el tema de ¿Elemento de texto de un Array como valor numérico? en el foro de Javascript en Foros del Web. ¡Hola! Tengo el siguiente array a modo de tarifa para mostrar precios en mi página web. Código: var precio = new Array(); precio[0] = "00,00"; ...
  #1 (permalink)  
Antiguo 20/06/2011, 11:39
Avatar de joss23  
Fecha de Ingreso: noviembre-2009
Mensajes: 16
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta ¿Elemento de texto de un Array como valor numérico?

¡Hola!

Tengo el siguiente array a modo de tarifa para mostrar precios en mi página web.

Código:
var precio = new Array();

precio[0] = "00,00";
precio[1] = "27,50"; // Ref.: 0001
precio[2] = "19,00"; // Ref.: 0002
precio[3] = "31,50"; // Ref.: 0003
precio[4] = ((precio[1] - el 15%)) ; // Ref.: 0001 Dto socios
precio[5] = ((precio[2] - el 15%)) ; // Ref.: 0002 Dto socios
precio[6] = ((precio[3] - el 15%)) ; // Ref.: 0003 Dto socios
El caso es que los elementos de este array deben ser de texto, puesto que son mostrados en el documento html correspondiente mediante la funcion document.write(precio[...]), pero los elementos precio[4], precio[5] y precio[6] deben estar en función de precio[1], precio[2] y precio[3] (multiplicados por 0,85).

¿Cómo puedo conseguir lo que necesito?

¡Muchas gracias! :)
  #2 (permalink)  
Antiguo 20/06/2011, 12:25
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 2 meses
Puntos: 192
Respuesta: ¿Elemento de texto de un Array como valor numérico?

No es necesario que los elementos sean de "text" si querés insertarlos en el DOM en un nodo. Sin embargo, sí necesitan ser números para que puedas realizar operaciones numéricas.

Algo así:

Código Javascript:
Ver original
  1. var precio = new Array();
  2. precio[0] = 0;
  3. precio[1] = 27.5; // Ref.: 0001
  4. precio[2] = 19; // Ref.: 0002
  5. precio[3] = 31.5; // Ref.: 0003
  6. precio[4] = ((precio[1] - (precio[1]*0.85))) ; // Ref.: 0001 Dto socios
  7. precio[5] = ((precio[2] - (precio[2]*0.85))) ; // Ref.: 0002 Dto socios
  8. precio[6] = ((precio[3] - (precio[3]*0.85))) ; // Ref.: 0003 Dto socios

No vas a tener problema tratando esos valores para mostrarlos. Si lo que querés es darle formato numérico de 2 cifras y usar la coma como separador decimal podés usar el método .toFixed() para darle el número de cifras decimales.

Así:

Código Javascript:
Ver original
  1. var num = var num = 10;
  2. num = num.toFixed(2);
  3. alert(num); //muestra "10.00"

Para intercambiar el punto por la coma podés usar el método .replace() de los strings (Claro que tenés que convertir el número a string con .toString()).

Te dejo un ejemplo funcionando:
http://jsbin.com/edova5

Código, con una función para facilitar el asunto:
Código Javascript:
Ver original
  1. var precio = new Array();
  2. precio[0] = 0;
  3. precio[1] = 27.5; // Ref.: 0001
  4. precio[2] = 19; // Ref.: 0002
  5. precio[3] = 31.5; // Ref.: 0003
  6. precio[4] = ((precio[1] - (precio[1]*0.85))) ; // Ref.: 0001 Dto socios
  7. precio[5] = ((precio[2] - (precio[2]*0.85))) ; // Ref.: 0002 Dto socios
  8. precio[6] = ((precio[3] - (precio[3]*0.85))) ; // Ref.: 0003 Dto socios
  9.  
  10. alert(precio[4].toFixed(2));//mostrar 2 cifras decimales
  11. alert(precio[4].toFixed(2).toString().replace('.',','));//mostrar con coma
  12.    
  13. alert(_formatearNum(precio[4]));//usando la funcion
  14.    
  15. function _formatearNum(num){
  16.       return num.toFixed(2).toString().replace('.',',');
  17. }


Espero eso resuelva tu duda :)
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 21/06/2011, 02:47
Avatar de joss23  
Fecha de Ingreso: noviembre-2009
Mensajes: 16
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: ¿Elemento de texto de un Array como valor numérico?

Cita:
Iniciado por Naahuel Ver Mensaje
No es necesario que los elementos sean de "text" si querés insertarlos en el DOM en un nodo. Sin embargo, sí necesitan ser números para que puedas realizar operaciones numéricas.

Algo así:

Código Javascript:
Ver original
  1. var precio = new Array();
  2. precio[0] = 0;
  3. precio[1] = 27.5; // Ref.: 0001
  4. precio[2] = 19; // Ref.: 0002
  5. precio[3] = 31.5; // Ref.: 0003
  6. precio[4] = ((precio[1] - (precio[1]*0.85))) ; // Ref.: 0001 Dto socios
  7. precio[5] = ((precio[2] - (precio[2]*0.85))) ; // Ref.: 0002 Dto socios
  8. precio[6] = ((precio[3] - (precio[3]*0.85))) ; // Ref.: 0003 Dto socios

No vas a tener problema tratando esos valores para mostrarlos. Si lo que querés es darle formato numérico de 2 cifras y usar la coma como separador decimal podés usar el método .toFixed() para darle el número de cifras decimales.

Así:

Código Javascript:
Ver original
  1. var num = var num = 10;
  2. num = num.toFixed(2);
  3. alert(num); //muestra "10.00"

Para intercambiar el punto por la coma podés usar el método .replace() de los strings (Claro que tenés que convertir el número a string con .toString()).

Te dejo un ejemplo funcionando:
[URL="http://jsbin.com/edova5"]http://jsbin.com/edova5[/URL]

Código, con una función para facilitar el asunto:
Código Javascript:
Ver original
  1. var precio = new Array();
  2. precio[0] = 0;
  3. precio[1] = 27.5; // Ref.: 0001
  4. precio[2] = 19; // Ref.: 0002
  5. precio[3] = 31.5; // Ref.: 0003
  6. precio[4] = ((precio[1] - (precio[1]*0.85))) ; // Ref.: 0001 Dto socios
  7. precio[5] = ((precio[2] - (precio[2]*0.85))) ; // Ref.: 0002 Dto socios
  8. precio[6] = ((precio[3] - (precio[3]*0.85))) ; // Ref.: 0003 Dto socios
  9.  
  10. alert(precio[4].toFixed(2));//mostrar 2 cifras decimales
  11. alert(precio[4].toFixed(2).toString().replace('.',','));//mostrar con coma
  12.    
  13. alert(_formatearNum(precio[4]));//usando la funcion
  14.    
  15. function _formatearNum(num){
  16.       return num.toFixed(2).toString().replace('.',',');
  17. }


Espero eso resuelva tu duda :)
Muchas gracias Naahuel!!
Lo acabo de probar y funciona a la perfección :D
Gracias otra vez!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:18.