2010-08-13 17 views
34

रूबी सरणी को अपने तत्वों के लगातार जोड़े की सरणी में बदलने का सबसे आसान तरीका क्या है?रूबी सरणी को लगातार जोड़े की सरणी में परिवर्तित करना

मेरा मतलब है:

x = [:a, :b, :c, :d] 

अपेक्षित परिणाम:

y #=> [[:a, :b], [:c, :d]] 

उत्तर

70

उपयोग Enumerable#each_slice:

y = x.each_slice(2).to_a 
#=> [[:a, :b], [:c, :d]] 

[0, 1, 2, 3, 4, 5].each_slice(2).to_a 
#=> [[0, 1], [2, 3], [4, 5]] 
+0

धन्यवाद नहीं है! मैं किसी भी तरह से इस विधि को याद किया। –

2
Hash[*[:a, :b, :c, :d]].to_a 
+0

चालाक है, लेकिन यह क्रम बनाए रखने के नहीं है। –

+0

यह करता है (कम से कम रुबी 1.9.2dev में)। –

+3

आकर्षक! http://www.igvita.com/2009/02/04/ruby-19-internals-ordered-hash/ –

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