Ruby 对于索引,每个索引都从1开始
我在rails应用程序中的视图上使用ruby迭代器,如下所示:Ruby 对于索引,每个索引都从1开始,ruby,ruby-on-rails-3,iterator,Ruby,Ruby On Rails 3,Iterator,我在rails应用程序中的视图上使用ruby迭代器,如下所示: <% (1..@document.data.length).each_with_index do |element, index| %> ... <% end %> ... 我认为增加1。。而不仅仅是说: @document.data 将获得使上面的索引从1开始的技巧。但遗憾的是,上面的代码索引仍然是0到data.length(-1)。那么我做错了什么,我需要索引等于1-data.length…不知
<% (1..@document.data.length).each_with_index do |element, index| %>
...
<% end %>
...
我认为增加1。。而不仅仅是说:
@document.data
将获得使上面的索引从1开始的技巧。但遗憾的是,上面的代码索引仍然是0到data.length(-1)。那么我做错了什么,我需要索引等于1-data.length…不知道如何设置迭代器来实现这一点。没有让索引从1开始这样的事情。如果要跳过数组中的第一项,请使用
next
<% (1..@document.data.length).each_with_index do |element, index| %>
next if index == 0
<% end %>
如果索引=0,则下一步
数组索引总是以零为基
如果要跳过第一个元素(听起来像这样),请执行以下操作:
@document.data[1..-1].each do |data|
...
end
我想你可能误解了每个带有索引的代码
每个
将迭代数组中的元素
[:a, :b, :c].each do |object|
puts object
end
哪些输出
:a
:b
:c
每个带有索引的\u
迭代元素,并传入索引(从零开始)
哪个输出
:a at index 0
:b at index 1
:c at index 2
:a at index 1
:b at index 2
:c at index 3
如果你想让它1-索引,那么只需添加1
[:a, :b, :c].each_with_index do |object, index|
indexplusone = index + 1
puts "#{object} at index #{indexplusone}"
end
哪个输出
:a at index 0
:b at index 1
:c at index 2
: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
如果我没弄错你的问题,你想从1开始索引,但是在ruby数组中,索引是0,所以最简单的方法是 给定的
@document.data
是一个数组
index = 1
@document.data.each do |element|
#your code
index += 1
end
HTH除非您使用的是像1.8这样的旧Ruby(我想这是在1.9中添加的,但我不确定),否则您可以使用
每一个。使用_index(1)
获得基于1的枚举数:
在您的情况下,它将是这样的:
<% @document.data.length.each.with_index(1) do |element, index| %>
...
<% end %>
...
希望有帮助 我也遇到了同样的问题,通过使用each_with_索引方法解决了这个问题。但是在代码的索引中添加了1
@someobject.each_with_index do |e, index|
= index+1
使用:
产生:
value: a has index: 1
value: b has index: 2
value: c has index: 3
这可能不是完全相同的
每个带有索引的方法,但我认为结果可能接近mod中的要求
%w(a b c).each.with_index(1) { |item, index| puts "#{index} - #{item}" }
# 1 - a
# 2 - b
# 3 - c
有关详细信息数组的第一个索引始终为0
。该索引始终以零为基础。这有什么关系?@Codejoy-由于您的问题是由多个用户回答的,所以最好投票/接受一些答案。琐事:Perl有一个全局变量$[
您可以将所有数组索引设置为从1或任何其他值开始。我们应该很高兴Ruby没有这个值。这几天肯定是更好的答案。我希望这个问题的作者能将此设置为正确答案。我为那些不深入阅读并忽略这一点的人感到难过。mod可以更改已接受的ans吗wer>在Ruby 2.6.4中工作,尽管我没有使用each***,并且一开始使用了下划线。