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:
Eso colca en este ordenVer original
var v = { "10": "foo", "9":"bar", "1":"baz", "5":"bat", "6":"candy" }; for(var i in v){ console.log(i + "=" + v[i]); }
Cita:
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 1=baz
5=bat
6=candy
9=bar
10=foo
5=bat
6=candy
9=bar
10=foo
Código Javascript:
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. Ver original
var v = { " 10": "foo", " 9":"bar", " 1":"baz", " 5":"bat", " 6":"candy" }; for(var i in v){ console.log(i + "=" + v[i]); }
), no funciona esa idea para los indices numéricos, bueno al menos yo lo traté con chrome y no salió. Todos los indices los vuelve a colocar en orden numérico y los indices asociativos los deja como está, por ahora lo que me funciona es dejar un espacio o alguna letra, o cambiar a que el valor sea el indice y el indice el valor. Pero bueno si tienes otra idea es bienvenida y así la practico
: bueno, la otra alternativa sería crear un array y que cada elemento sea un objeto. esta forma es infalible. pero a mi juicio es un tanto molestoso porque dependerás de dos bules: el bucle para el array, y el bucle para la propiedad ya que esta es dinámica.


Este tema le ha gustado a 1 personas