4

如何获取项目的索引:

my_array.inject {|rs,item| rs += item}

我需要总结除第 i 个元素之外的所有内容。

4

4 回答 4

4

只需总结索引即可。

(0...a.size).inject(0) { |sum, index| if index != (i - 1) then sum + my_array[i] else sum }
于 2009-10-04T11:01:58.257 回答
3

您必须自己编写(即使在 Ruby 1.9 中,因为注入不返回迭代器)。

module Enumerable
  def inject_with_index(injected)
    each_with_index {|value, index| injected = yield(injected, value, index)}
    injected
  end
end

编辑:如果你来回切换injecteach_with_index感谢评论者!)你可以在没有新方法的情况下做到这一点:

["a", "b", "c"].each_with_index.inject("") do |result, (value, index)|
  index != 1 ? result + value : result
end

result如果您想排除该值,请确保返回。这也适用于第一种方法。

于 2009-10-04T11:05:22.283 回答
2

您可以先取出您不想要的物品:

my_array.values_at(0...i,(i+1)..-1).inject {|rs,item| rs += item}
于 2009-10-04T12:05:29.247 回答
2

数组的使用index方法:

>> arr = ['a','b', 'c','a']
=> ["a", "b", "c", "a"]
>> arr.index('a')
=> 0
>> arr.index('b')
=> 1
于 2009-10-04T10:54:36.210 回答