アイテムのインデックスを取得する方法:
my_array.inject {|rs,item| rs += item}
i番目の要素を除くすべてを要約する必要があります。
アイテムのインデックスを取得する方法:
my_array.inject {|rs,item| rs += item}
i番目の要素を除くすべてを要約する必要があります。
インデックスを要約するだけです。
(0...a.size).inject(0) { |sum, index| if index != (i - 1) then sum + my_array[i] else sum }
独自に作成する必要があります(Ruby 1.9でも、injectはイテレータを返さないため)。
module Enumerable
def inject_with_index(injected)
each_with_index {|value, index| injected = yield(injected, value, index)}
injected
end
end
編集:切り替えた場合(コメント投稿inject
者each_with_index
のおかげで!)、新しい方法なしでそれを行うことができます:
["a", "b", "c"].each_with_index.inject("") do |result, (value, index)|
index != 1 ? result + value : result
end
result
値を除外したい場合は、必ず戻ってください。これは最初の方法にも当てはまります。
index
配列のメソッドを使用します。
>> arr = ['a','b', 'c','a']
=> ["a", "b", "c", "a"]
>> arr.index('a')
=> 0
>> arr.index('b')
=> 1
最初に不要なアイテムを取り出すことができます。
my_array.values_at(0...i,(i+1)..-1).inject {|rs,item| rs += item}