Я использую Ruby 1.8.7. У меня есть следующий массив хешей. Сначала мне нужно отсортировать по логическому значению, но эти результаты также должны быть упорядочены в исходном порядке. В основном мне нужно переместить все истинные хэши в верхнюю часть массива, но сохранить исходный порядок.
Любая помощь будет принята с благодарностью!
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
Этот вид, который у меня есть, дает:
5 - true
3 - верно
2 - ложь
4 - ложь
1 - ложь
Мне нужно, чтобы оно выдало:
3 - истина
5 - верно
1 - ложь
2 - ложь
4 - false