Ответ 1
Попробуйте метод разбиения
@arr1, @arr2 = @level1.partition { |x| x[0] > 2.1 }
Условие, возможно, потребуется отрегулировать, поскольку это не очень хорошо указано в вопросе, но это должно стать хорошей отправной точкой.
У меня есть массив с именем @level1
который имеет такое значение:
[
[3.1, 4],
[3.0, 7],
[2.1, 5],
[2.0, 6],
[1.9, 3]
]
Я хочу разбить это на два массива, так что первый массив (@arr1
) содержит значения до 2.1
а второй массив (@arr2
) содержит значения после него.
Сделав это, я бы изменил сортировку своего второго массива, выполнив что-то вроде этого:
@arr2 = @arr2.sort_by { |x, _| x }.reverse
Затем я хотел бы объединить этот массив с @arr1
. Может ли кто-нибудь помочь мне разделить массив, а затем объединить их вместе?
Попробуйте метод разбиения
@arr1, @arr2 = @level1.partition { |x| x[0] > 2.1 }
Условие, возможно, потребуется отрегулировать, поскольку это не очень хорошо указано в вопросе, но это должно стать хорошей отправной точкой.
что-то вроде этого?
arr = [
["3.1", 4],
["3.0", 7],
["2.1", 5],
["2.0", 6],
["1.9", 3]
]
arr1, arr2 = arr.inject([[], []]) do |f,a|
a.first.to_f <= 2.1 ? f.last << a : f.first << a; f
end
arr = arr1 + arr2.reverse
=> [["3.1", 4], ["3.0", 7], ["1.9", 3], ["2.0", 6], ["2.1", 5]]