मैं रुबी 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 - सच
3 - सच
2 - झूठी
4 - झूठी
1 - झूठी उपज के लिए
मैं इसे की जरूरत है :
3 - सत्य
5 - tr ue
1 - झूठी
2 - झूठी
4 - झूठी
बिंगो! धन्यवाद एक लाख फिलिप! – Nick
आपका स्वागत है! ;) – Philip
मुझे इस समाधान को पसंद नहीं है क्योंकि यह मूल आदेश नहीं रखता है जिसे लेखक द्वारा एक आवश्यकता के रूप में वर्णित किया गया था। इसके बजाय इसका अर्थ है कि 'आईडी' पहले से ही आदेश दिया गया है और इसे एक सहायक कुंजी के रूप में दुरुपयोग करता है। – hurikhan77