2011-09-27 13 views
7

मौजूद नहीं है एक रेल आवेदन में, मैं हैश की एक सरणी जो मैं इन सबसे बड़ी आसानी सेरूबी: हैश की तरह सरणी, यहां तक ​​कि कुंजी हालांकि

array_of_hashes.sort_by { |hash| hash[:key_to_sort] } 

साथ लेकिन क्या होगा अगर नहीं हर सरणी सदस्य एक है सकते हैं कुंजी :key_to_sort? फिर सॉर्ट विफल हो जाएगा "स्ट्रिंग के साथ स्ट्रिंग की तुलना विफल"। क्या सॉर्ट जारी रखने की अनुमति देने का कोई तरीका है? या ऐसा करने का कोई और तरीका है?

उत्तर

11

यह निर्भर करता है कि आप क्या करना चाहते हैं जब हैश में सॉर्टिंग कुंजी नहीं है। ** अच्छा

arr.sort_by { |h| h[:key_to_sort] || REALLY_SMALL_OR_LARGE_VALUE } 
+0

**: छँटाई

arr.delete_if { |h| h[:key_to_sort].nil? }.sort_by { |h| h[:key_to_sort] } 

2) सरणी की शुरुआत/अंत में हैश जगह से

1) हैश को बाहर: मैं दो स्थितियों की कल्पना कर सकते हैं। ऐसे मामले में हैश को शुरुआत/अंत में ले जाना जो मैं सोच रहा था, बस यह नहीं पता था कि इसे कैसे किया जाए। वर्णमाला के मामले में, मैंने गुम मूल्यों को ऊपर रखने के लिए अभी '' ए 'का उपयोग किया था। –

+0

ओह, और हैश को बाहर करने के विकल्प का वर्णन करने के लिए +1। –

+2

खुशी है कि मैं मदद कर सकता हूं। IMHO छोटे स्ट्रिंग मान के लिए "ए" से "" (खाली स्ट्रिंग) का उपयोग करना बेहतर होगा। –

संबंधित मुद्दे