配列操作で重複・nil除去
Ruby基礎の配列
Rubyでは配列は Array クラスで表現され、数値・文字列・オブジェクトなど任意の型を格納できます。配列はインデックスでアクセスし、0から始まる整数で参照します。
numbers = [1, 2, 3, 4, 5]
puts numbers[0] # => 1
puts numbers[-1] # => 5
配列の長さは size や length で取得できます。
puts numbers.size # => 5
配列応用: sliceとdelete
配列の一部を抜き出す slice は、開始インデックスと長さを指定して部分配列を返します。負のインデックスもサポートされます。
letters = ['a', 'b', 'c', 'd', 'e']
p letters.slice(1, 3) # => ["b", "c", "d"]
p letters.slice(-3, 2) # => ["c", "d"]
配列から要素を削除するには delete と delete_at を使います。delete は値を指定してすべての一致を削除し、delete_at はインデックスを指定して1つだけ削除します。
arr = [1, 2, 3, 2, 4]
arr.delete(2) # => 2
p arr # => [1, 3, 4]
arr.delete_at(1) # => 3
p arr # => [1, 4]
削除後に配列のインデックスが再編成される点に注意してください。
重複削除とnil除去
配列内の重複を取り除くには uniq を使用します。元の配列は変更されず、新しい配列が返ります。
dup = [1, 2, 2, 3, 3, 3]
unique = dup.uniq
p unique # => [1, 2, 3]
配列に nil が混在している場合は compact で除去できます。
mixed = [1, nil, 2, nil, 3]
clean = mixed.compact
p clean # => [1, 2, 3]
さらに多次元配列を一次元に平坦化したいときは flatten を使います。flatten は再帰的にすべてのネストを解消します。
nested = [1, [2, [3, 4], 5], 6]
flat = nested.flatten
p flat # => [1, 2, 3, 4, 5, 6]
これらのメソッドを組み合わせることで、配列のデータをクリーンに整形し、重複削除・nil除去・平坦化を一度に行うことも可能です。
コメント
コメントを投稿