Tengo una tabla de clave => valor que me gustaría ordenar en Lua. Las claves son todas enteros, pero no son consecutivas (y tienen significado). La única función de ordenación de Lua parece ser table.sort
, que trata las tablas como matrices simples, descartando las claves originales y su asociación con elementos particulares. En cambio, esencialmente me gustaría poder usar la función PHP's asort()
.Ordenando asociativamente una tabla por valor en Lua
Lo que tengo:
items = {
[1004] = "foo",
[1234] = "bar",
[3188] = "baz",
[7007] = "quux",
}
Lo que quiero después de la operación de ordenación:
items = {
[1234] = "bar",
[3188] = "baz",
[1004] = "foo",
[7007] = "quux",
}
¿Alguna idea?
Editar: Sobre la base de las respuestas, voy a asumir que es simplemente un capricho impar de la intérprete de Lua incrustado particular, estoy trabajando con, pero en todas mis pruebas, pairs()
siempre devuelve los elementos de la tabla en el orden en que fueron agregados a la mesa. (es decir, las dos declaraciones anteriores se repetirían de forma diferente).
Desafortunadamente, como no es un comportamiento normal, parece que no puedo obtener lo que necesito; Lua no tiene las herramientas necesarias integradas (por supuesto) y el entorno integrado es demasiado limitado para que yo pueda solucionarlo.
Aún así, gracias por su ayuda, ¡todo!
Estas dos tablas son exactamente lo mismo. – lhf