2010-01-27 14 views
7
द्वारा एक सरणी

मान लीजिए मैंछंटाई दो मानों

an_array = [[2, 3], [1, 4], [1, 3], [2, 1], [1, 2]] 

है मैं हर भीतरी सरणी के पहले मूल्य से इस सरणी सॉर्ट करने के लिए, और फिर से दूसरे (ताकि क्रमबद्ध सरणी इस तरह दिखना चाहिए हैं: [[1, 2], [1, 3], [1, 4], [2, 1], [2, 3]])

ऐसा करने का सबसे अधिक पढ़ने योग्य तरीका क्या है?

उत्तर

13

यह सरणियों छँटाई के लिए डिफ़ॉल्ट व्यवहार (सबूत के लिए Array#<=> विधि परिभाषा देखें)।

an_array.sort 
8

आप कुछ गैर डिफ़ॉल्ट व्यवहार चाहते हैं, जांच sort_by (माणिक 1.8.7+)

उदहारण के लिए: तुम बस ऐसा करने में सक्षम होना चाहिए पहले

द्वारा दूसरा तत्व के आधार पर चुनना तो
a.sort_by {|e| [e[1], e[0]]} # => [[2, 1], [1, 2], [1, 3], [2, 3], [1, 4]] 

या प्रकार पहला तत्व आरोही और फिर दूसरा तत्व उतरते

a.sort_by {|e| [e[0], -e[1]]} # => [[1, 4], [1, 3], [1, 2], [2, 3], [2, 1]] 
+0

@glenn जैकमैन द्वारा: महान जवाब !!! यही वह है जिसे मैं ढूंढ रहा था। धन्यवाद – Radek

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