я пришел с ниже решения, но я считаю, что должно быть лучше один там ...Как перебирать массив, начиная с последнего элемента? (Ruby)
array = [ 'first','middle','last']
index = array.length
array.length.times { index -= 1; puts array[index]}
я пришел с ниже решения, но я считаю, что должно быть лучше один там ...Как перебирать массив, начиная с последнего элемента? (Ruby)
array = [ 'first','middle','last']
index = array.length
array.length.times { index -= 1; puts array[index]}
array.reverse.each { |x| puts x }
Рубин умна
a = [ "a", "b", "c" ]
a.reverse_each {|x| print x, " " }
Вы можете даже использовать для цикла
array = [ 'first','middle','last']
for each in array.reverse do
print array
end
напечатает
last
middle
first
В шаблоне нефрита вы можете использовать:
for item in array.reverse()
item
В случае, если вы хотите перебрать диапазон в обратном направлении, то используйте:
(0..5).reverse_each do |i|
# do something
end
Выполняет ли '# reverse_each' обратную операцию? Или это только начинается в конце и работает назад? Если последний, этот ответ мог бы обеспечить лучшую временную сложность, чем первый вызов '# reverse', а затем' # each' отдельно, так как '# reverse' - это, по сути, операция сортировки O (n log n), в то время как подсчет от последнего к первому так же, как '# each' с точки зрения временной сложности (то есть O (n)). –
Если вы хотите, чтобы достичь того же, без использования reverse [Иногда этот вопрос приходит в интервью]. Нам нужно использовать основную логику.
вывод на экран или новый массив или использовать цикл для выполнения какой-либо логики ,
def reverseArray(input)
output = []
index = input.length - 1 #since 0 based index and iterating from
last to first
loop do
output << input[index]
index -= 1
break if index < 0
end
output
end
array = ["first","middle","last"]
reverseArray array #outputs: ["last","middle","first"]
Я знал, что будет что-то 'nice' ... Спасибо. – Radek
На самом деле 'reverse_each' лучше, потому что он не делает копию массива как' reverse'. –
Да, я также ожидал бы, что 'reverse_each' лучше, хотя я не ворвался внутрь, чтобы убедиться сам. –