0

を含む配列があります

arrTV = ['Thor: The Dark World', 'Ender's Game', 'Jackass Presents: Bad Grandpa', 'Last Vegas', 'Free Birds', 'Free Birds' ]

最後の 2 つの要素は重複しています。配列をループして、重複が存在するかどうかを確認し、使用したくない.uniq

ご意見をお聞かせください

私はこのようなことを試しましたが、うまくいきません

arrTV.each do |i|
  count = 0

  #if arrTV[i] == arrTV[i+1]
  #  puts "equal"
  #  count = count + 1
  #
  #end
  #puts count

  #if arrTV[i] = arrTV[i+1]
  #arrTV.delete_at(i+1)
  #end

end

どこが間違っていますか?

4

6 に答える 6

3

これはおそらく最も効率的ではありませんが、何が起こっているのかを大まかに理解するのは簡単です。

require 'set'

arrTV = ['Thor: The Dark World', 'Ender's Game', 'Jackass Presents: Bad Grandpa', 'Last Vegas', 'Free Birds', 'Free Birds' ]

arrTV.to_set.to_a
于 2013-11-04T23:20:33.963 に答える
1

あなたはこれを行うことができます:

arr = []
arrTV.each do |e|
     arr << e unless arr.include?(e)
end
#arr should now contains the same elements as arrTV.uniq does.

しかし、なぜ使用しないのuniqですか?もしかして宿題?

于 2013-11-04T23:25:55.287 に答える
1

Array#|メソッドを使用したくない場合は、メソッドを使用できると思いますArray#uniq

arr = %w(foo bar baz bar)
(arr | arr)
# => ["foo", "bar", "baz"]
于 2013-11-05T03:34:31.427 に答える
1

どうですか:

2.0.0-p247 :004 > arrTV = ['Thor: The Dark World', 'Ender\'s Game', 
'Jackass Presents: Bad Grandpa', 'Last Vegas', 'Free Birds', 'Free Birds' ]  
# (Note escaping the `'` in Ender`'`s)

2.0.0-p247 :009 > prev='xxxxx'
2.0.0-p247 :009 > new_array=[]

2.0.0-p247 :016 > arrTV.sort.each do |current|
2.0.0-p247 :017 >     if (current != prev)
2.0.0-p247 :018?>       new_array << current
2.0.0-p247 :018?>       puts current
2.0.0-p247 :019?>       prev=current
2.0.0-p247 :020?>     end
2.0.0-p247 :021?>   end
Ender's Game
Free Birds
Jackass Presents: Bad Grandpa
Last Vegas
Thor: The Dark World
于 2013-11-04T23:15:30.147 に答える