Как разбить массив с неопределенными записями:Как разбить массив на основе индекса его значений?
["a","b","c","d","e",...]
В четных и нечетных массивах как:
["a","c","e",...]
и
["b","d","f",...]
Как разбить массив с неопределенными записями:Как разбить массив на основе индекса его значений?
["a","b","c","d","e",...]
В четных и нечетных массивах как:
["a","c","e",...]
и
["b","d","f",...]
Edit после осветления:
Yo и может сделать что-то вроде этого:
odds = []
evens = []
array.each_with_index { |el, index| index % 2 == 0 ? evens << el : odds << el }
[odds, evens]
'[1,2,3,4,5] .select {| el | 11? } => [1,3,5] 'не возвращает то, что вы думаете. Возможно, вы захотите это исправить. –
Спасибо и исправлены! –
Проверьте мое новое решение;) – Abdo
EDITED: общее решение
partitions_number = 2
['a','b','c','d','e'].group_by.with_index { |obj, i| i % partitions_number }.values
=> [["a", "c", "e"], ["b", "d"]]
['a','b','c','d','e'].group_by.with_index { |obj, i| i % 3 }.values
=> [["a", "d"], ["b", "e"], ["c"]]
Это немного сложно читать. но он работает! –
Отредактировано на основе комментариев:
arr = [:foo, :foo, :bar, :baz, :qux, :foo]
evens, odds = arr.partition.with_index{ |_, i| i.even? }
evens # [:foo, :bar, :qux]
odds # [:foo, :baz, :foo]
Если вы используете Rails или может require 'active_support'
вы можете это сделать:
a.in_groups_of(2).transpose
Что это будет, если массив имеет нечетное число элементов? –
@Wayne 'in_groups_of' будет заполнять' nil', чтобы сделать их четными. 'transpose' доволен этим. –
Замечательный. Теперь я могу поддержать этот замечательный ответ! –
Вы запрашиваете четное и нечетное расщепление? –
Вы спрашиваете, является ли количество записей четным или нечетным? Потому что это меняется. – user3094719
Вы помещаете нечетные значения в массив и даже значения в другой, или это просто основано на индексе внутри массива? – Vache