Estoy usando Ruby 1.8.7. Tengo la siguiente matriz de hashes. Necesito ordenar primero el valor booleano, pero esos resultados también deben ordenarse en el orden original. Básicamente, necesito cambiar todos los hashes verdaderos a la parte superior de la matriz, pero mantener el orden original.Ruby ordenar por booleano y el número
¡Cualquier ayuda sería apreciada!
array = [{:id => 1, :accepts => false},
{:id => 2, :accepts => false},
{:id => 3, :accepts => true},
{:id => 4, :accepts => false},
{:id => 5, :accepts => true}]
sorted = array.sort do |x, y|
if x[:accepts] == y[:accepts]
0
elsif x[:accepts] == true
-1
elsif x[:accepts] == false
1
end
end
Este tipo que tengo rendimientos:
5 - true
3 - true
2 - falsa
4 - falsa
1 - false
lo necesito para producir :
3 - true
5 - tr ue
1 - false
2 - falsa
4 - falsa
Bingo! ¡Gracias un millón Philip! – Nick
¡De nada! ;) – Philip
No me gusta esta solución porque NO mantiene el orden original que fue mencionado por el autor como un requisito. En cambio, implica que ': id' ya está ordenado y lo usa incorrectamente como clave auxiliar. – hurikhan77