Published on

Rubyで複数の配列を消す方法

Authors
  • avatar
    Name
    ssu
    Twitter

Rubyの配列があったときにdelete_atで一つずつは消すことは可能かと思います。

では、複数の配列を消すためにはどうしたらよいのでしょうか?

結論は、delete_at([0,1])のように複数の配列を直感的に消す方法はなく、 delete_ifを使うしかありません。

t = ['a','b','c','d'] t.delete_if.with_index {|ele, i| [0,1].include?(i) }# 要素番号が0と1番目を消すコード

delete_ifwith_indexを使っているので少し歪かもしれませんが、 これで一応、指定した(include?で指定)要素を消すことができます。 またdeleteは破壊的ですが、破壊的ではなく要素をなくしたい場合は、rejectが使えます。

t = ['a','b','c','d'] x.reject.with_index { |ele, i| [0,1].include?(i) } #=> ['c', 'd']

参考: Delete contents of array based on a set of indexes

参考: Removing multiple elements from array by index in Ruby [duplicate]