分かりやすく、使いやすく。

配列の重複した要素を削除する方法

スポンサーリンク

配列内に重複した値を持つ要素がある場合、 Ruby では uniq メソッドを使用すれば重複した要素を削除することができます。

  1. 重複を削除した配列を別の配列として取得する方法(uniq)
  2. 配列から重複した要素を直接削除する方法(uniq!)


重複を削除した配列を別の配列として取得する方法(uniq)

ruby(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ary1 = [1, 1, 3, 3, 2, 5, 4, 1, 3]
 
puts "◆重複削除前の内容"
 
ary1.each_with_index{|value, index|
    puts "インデックス:#{index} => 値:#{value}"
}
 
# 重複を削除
ary2 = ary1.uniq
 
puts "◆重複削除前の内容"
 
ary2.each_with_index{|value, index|
    puts "インデックス:#{index} => 値:#{value}"
} 

上記の実行結果は次の通りです。

◆重複削除前の内容
インデックス:0 => 値:1
インデックス:1 => 値:1
インデックス:2 => 値:3
インデックス:3 => 値:3
インデックス:4 => 値:2
インデックス:5 => 値:5
インデックス:6 => 値:4
インデックス:7 => 値:1
インデックス:8 => 値:3
◆重複削除前の内容
インデックス:0 => 値:1
インデックス:1 => 値:3
インデックス:2 => 値:2
インデックス:3 => 値:5
インデックス:4 => 値:4 

配列から重複した要素を直接削除する方法(uniq!)

uniq メソッドは uniq! として呼び出すことで、メソッドを呼び出した配列から重複した要素を削除します。

ruby(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ary = [1, 1, 3, 3, 2, 5, 4, 1, 3]
 
puts "◆重複削除前の内容"
 
ary.each_with_index{|value, index|
    puts "インデックス:#{index} => 値:#{value}"
}
 
# 重複を削除
ary.uniq!
 
puts "◆重複削除前の内容"
 
ary.each_with_index{|value, index|
    puts "インデックス:#{index} => 値:#{value}"
}  

上記の実行結果は次の通りです。

◆重複削除前の内容
インデックス:0 => 値:1
インデックス:1 => 値:1
インデックス:2 => 値:3
インデックス:3 => 値:3
インデックス:4 => 値:2
インデックス:5 => 値:5
インデックス:6 => 値:4
インデックス:7 => 値:1
インデックス:8 => 値:3
◆重複削除前の内容
インデックス:0 => 値:1
インデックス:1 => 値:3
インデックス:2 => 値:2
インデックス:3 => 値:5
インデックス:4 => 値:4 
スポンサーリンク
スポンサーリンク