Böyle bir şey bir dizi var: BenRuby
sub_arrays = split (arr, 3)
gibi süslü bir yöntem Bu aşağıdaki dönmelidir istiyorum
arr = [4, 5, 6, 7, 8, 4, 45, 11]
: [[4, 5, 6], [7,8,4], [45,11]]
Böyle bir şey bir dizi var: BenRuby
sub_arrays = split (arr, 3)
gibi süslü bir yöntem Bu aşağıdaki dönmelidir istiyorum
arr = [4, 5, 6, 7, 8, 4, 45, 11]
: [[4, 5, 6], [7,8,4], [45,11]]
arr.each_slice(3).to_a
each_slice
bir Enumerable döndüren, bunun için yeterli olmadığını Sen, to_a
'u aramana gerek yok. 1.8.6 yılında
yapmanız gereken:
require 'enumerator'
arr.enum_for(:each_slice, 3).to_a
sadece yineleme gerekiyorsa, sadece yapabilirsiniz:
arr.each_slice(3) do |x,y,z|
puts(x+y+z)
end
senin gibi bir şey yapabilirsiniz 2.3+ Rayları kullanılıyorsa Bu:
arr.in_groups(3, false)
Bu yanlış. Yazarın belirttiği gibi, bir diziyi belirtilen boyuttaki alt dizilere ayırmaz. 3 grup oluşturur, 3 –
da belirli bir amaç ile bu yararlanabilirler: durumunda
((1..10).group_by {|i| i%3}).values #=> [[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]]
sadece iki bölümlenmiş diziler istiyorum: Rails
(1..6).partition {|v| v.even? } #=> [[2, 4, 6], [1, 3, 5]]
dizisi dizisi değil, dizi.group_by' çok kullanışlıdır. Aşağıdakileri yapabilirsiniz: false_group, true_group = some_array.group_by {| i | i.test_something?()}. values' – Automatico
Eğer belirtilen boyutta gruplar halinde bir dizi böler yöntemi in_groups_of
kullanabilirsiniz yöntem in_groups
Oysa
arr.in_groups_of(3) # => [[4, 5, 6], [7, 8, 4], [45, 11, nil]]
arr.in_groups_of(3, false) # => [[4, 5, 6], [7, 8, 4], [45, 11]]
bir diziyi belirtilen sayıda dengeli gruba böler.
arr.in_groups(5) # => [[4, 5], [6, 7], [8, 4], [45, nil], [11, nil]]
arr.in_groups(5, false) # => [[4, 5], [6, 7], [8, 4], [45], [11]]
Teşekkürler! Bu gerçekten hızlıydı! – bragboy
Veya 'b = []; b << a.shift (3) a.empty? '(eski Rubys için) – Nakilon
@Nakilon: Bu orijinal diziyi yok edecektir. – sepp2k