Ruby_Array_18

この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。

class Array (Ruby 3.0.0 リファレンスマニュアル)

インスタンスメソッド

difference(*other_arrays) -> Array
  • 自身からother_arraysの要素を取り除いた配列を返す
    • 要素の同一性はObject#hashとObject#eql?により評価される
  • self中で重複していて、other_arrays中に存在していなかった要素はその重複が保持される
  • 新しい配列における要素の順はselfにおける要素の順と同じ
irb(main):001:0> arr = [1, 2, 3]
=> [1, 2, 3]

irb(main):002:0> brr = arr.difference([2])
=> [1, 3]

irb(main):003:0> arr
=> [1, 2, 3]
irb(main):001:0> [1, 3, 5, 4, 4, 2, 2].difference([4, 10])
=> [1, 3, 5, 2, 2]
irb(main):001:0> [5, 5, 4, 3, nil, 3, '5', 2, 1, 1].difference([nil], [2, 5])
=> [4, 3, 3, "5", 1, 1]
irb(main):001:0> arr = %w[a b c]
=> ["a", "b", "c"]

irb(main):002:0> brr = arr.difference(['b'])
=> ["a", "c"]

irb(main):003:0> arr[0].capitalize!
=> "A"

irb(main):004:0> brr
=> ["A", "c"]

# memo
# 元の配列に破壊的な変更を加えると影響が出る

メモ

  • differenceというメソッドを今初めて知った