ruby – each_with_index_do从1开始为索引

前端之家收集整理的这篇文章主要介绍了ruby – each_with_index_do从1开始为索引前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在rails应用程序的视图中使用 ruby迭代器,如下所示:
<% (1..@document.data.length).each_with_index do |element,index| %>
  ...
<% end %>

我以为加了1 ..而不是说:
@ document.data

将获得上述索引开始于1的技巧.但是,上面的代码索引仍然是0到data.length(-1).那么我做错了什么,我需要索引等于1-data.length …没有线索如何设置迭代器来做到这一点.

解决方法

我想也许你误会every_with_index.

每个都将迭代数组中的元素

[:a,:b,:c].each do |object|
  puts object
end

输出;

:a
:b
:c

each_with_index遍历元素,并在索引中传递(从零开始)

[:a,:c].each_with_index do |object,index|
  puts "#{object} at index #{index}"
end

输出

:a at index 0
:b at index 1
:c at index 2

如果你想要1索引,那么只需添加1.

[:a,index|
  indexplusone = index + 1
  puts "#{object} at index #{indexplusone}"
end

输出

:a at index 1
:b at index 2
:c at index 3

如果要迭代数组的子集,那么只需选择子集,然后对其进行迭代

without_first_element = array[1..-1]

without_first_element.each do |object|
  ...
end

猜你在找的Ruby相关文章