2013-08-26 10 views
5

मैं रेलों (वर्णमाला क्रम) में सरणी को कैसे क्रमबद्ध करूं। मैंरेल में वर्णानुक्रम के अनुसार क्रमबद्ध करें

sort_by(&:field_name) 

की कोशिश की लेकिन वह मुझे और फिर छोटे अक्षर order.I की कोशिश की

array.sort! { |x,y| x.field_name.downcase <=> y.field_name.downcase } 

इस हल करने के लिए कोई तरीका है बड़े अक्षर आदेश के साथ सरणी देता है?

+2

कृपया अपने नमूना सरणी पेस्ट करें। –

+0

नमूना सरणी [जॉन, एलिस, जोसेफ, अन्ना, ज़िलहान] मैं परिणाम [एलिस, अन्ना, जॉन, जोसेफ, ज़िलान] – nisha

उत्तर

10

आप पहले हर स्ट्रिंग प्रकार की तरह downcase चाहिए और उसके बाद:

array = ["john", "Alice", "Joseph", "anna", "Zilhan"] 
array.sort_by!{ |e| e.downcase } 
=> ["Alice", "anna", "john", "Joseph", "Zilhan"] 
+0

के रूप में परिणाम चाहता हूं, आपने अभी गलती की है। इसके अनुसार क्रमबद्ध करें! सरणी ऑब्जेक्ट को स्वयं क्रमबद्ध करेगा। –

+0

हाँ मुझे पता है कि, यह आवश्यकता पर निर्भर करता है, आप इसका भी उपयोग कर सकते हैं: new_array = array.sort_by {| e | e.downcase}, लेकिन केवल तभी जब पुरानी सरणी की आवश्यकता होती है अन्यथा यह किसी अन्य वस्तु को बनाने के लिए बेकार है। –

0

ध्यान रखें - नाम विशेष वर्ण हो सकते हैं। इन्हें अंत तक हल किया जाएगा।

>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| e.downcase } 
=> ["Alice", "john", "Zilhan", "Ägidius"] 

इस कवर के लिए, आप उपयोग कर सकते हैं ...

>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| ActiveSupport::Inflector.transliterate(e.downcase) } 
=> ["Ägidius", "Alice", "john", "Zilhan"] 
संबंधित मुद्दे