Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/11/2012, 22:09
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
json google chrome los coloca en orden automáticamente

Saludos,

Estoy preparando un aplicación en la que convierte un array de PHP a json para poder manejarme en javascript para unos dropdown. Lo que me dio curiosidad es que el indice cuando es numérico google chrome y firefox tienden a sortearlo de menor a mayor a pesar de que le indique otro orden. Eso me afecta porque yo coloque en orden alfabético y los valores numéricos son solo indices que usaré para almacenar en una base de datos. Dejo un ejemplo
Código Javascript:
Ver original
  1. var v = { "10": "foo", "9":"bar", "1":"baz", "5":"bat", "6":"candy" };
  2. for(var i in v){
  3.     console.log(i + "=" + v[i]);
  4. }
Eso colca en este orden
Cita:
1=baz
5=bat
6=candy
9=bar
10=foo
De la forma como resolví momentaneamente el problema es usando llaves asociativas es decir invertí el que el valor sea numérico y el indice sea la palabra. No me gusta la idea mucho porque puede en un futuro una palabra repetirse pero el valor numérico no, ya que es un autoincrementable y por logica siempre va a ser único, no así el otro valor. Me gustaría saber si existe alguna forma que usando como indice el valor numérico se quede en el orden en que lo coloqué. Sé que conviritiendo el valor a tipo string posiblemente se resuelva pero hasta donde tengo entendido requiere de "trucos" como por ejemplo
Código Javascript:
Ver original
  1. var v = { " 10": "foo", " 9":"bar", " 1":"baz", " 5":"bat", " 6":"candy" };
  2. for(var i in v){
  3.     console.log(i + "=" + v[i]);
  4. }
Eso lo deja en el orden que le indiqué por el espacio que dejo al principio de cada llave, pero para eso tengo que estar quitando el espacio y luego añadir el dato al campo. Solo quiero saber si existe alguna forma de no correr a este tipo de trucos, posiblemente covertirlo a string usando funciones o lo que sea.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos