Swift の Array(配列)- 要素の削除
ここでは Swift の Array(配列)から要素を削除する方法についてご説明します。
Swift の Array(配列)から要素を削除するには、何個か方法があります。
それぞれの方法を、実際にコードを実行しながら見ていきましょう。
remove() で Array(配列)からインデックスを指定して要素を削除する
Swift の Array(配列)で、削除したい要素のインデックスがわかっている場合は remove() メソッドを使って要素を削除することができます。
使い方は Array.remove(at: index) のように index を指定します。
remove() は削除した要素を返すので、削除された要素が必要な時は戻り値を変数に代入するなどして使うことができます。
では、Array(配列)から 2 つ目の要素を remove() メソッドを使って削除してみましょう。
Swift のインデックスは 1 からではなく、0 から始まるので、2 つ目の要素のインデックスは 1 です。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
print(names)
let removed = names.remove(at: 1)
print(names)
print(removed)
実行結果は次のようになり、2 番目の Suzuki が names 配列から削除されて、removed に取得できています。
["Tanaka", "Suzuki", "Sato", "Yamada"]
["Tanaka", "Sato", "Yamada"]
Suzuki
removeSubrange() でインデックスの範囲を指定して要素を削除する
Swift の範囲演算子 を使って、Array(配列)から、removeSubrange() メソッドにインデックスの範囲を指定して要素を削除することができます。
例えば、先ほどの Array の 2 番目と 3 番目(インデックスが 1 から 2 )の要素を削除したいのであれば次のようにできます。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
print(names)
names.removeSubrange(1...2)
print(names)
実行結果は次のようになり、2 番目と 3 番目の要素が削除されています。
["Tanaka", "Suzuki", "Sato", "Yamada"]
["Tanaka", "Yamada"]
removeFirst() で Array の最初の要素を削除する
Swift の Array(配列)の最初の要素を削除したい時には removeFirst() メソッドを使います。
removeFirst() を引数なしで使った時には、一番最初の要素を削除して、戻り値として削除した要素を返します。
removeFirst(削除する要素数) のように、引数に削除する要素数を指定すると、一番最初から指定した数の要素を削除し、この場合は戻り値はありません。
それでは、removeFirst() を使って要素を削除してみましょう。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
print(names)
let removed = names.removeFirst()
print(names)
print(removed)
実行結果は次のようになり、names からは一番最初の Tanaka が削除され、removed という変数に削除された要素が取得できているのがわかります。
["Tanaka", "Suzuki", "Sato", "Yamada"]
["Suzuki", "Sato", "Yamada"]
Tanaka
また、前から 2 個、要素を削除したいのであれば、次のようにできます。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
print(names)
names.removeFirst(2)
print(names)
実行結果は次のようになり、names 配列の前から二つの要素が削除されています。
["Tanaka", "Suzuki", "Sato", "Yamada"]
["Sato", "Yamada"]
removeLast() で Array の最後の要素を削除する
Swift の Array(配列)の最後の要素を削除したい時には removeLast() メソッドを使います。
removeFirst() と最初と最後が違うだけでほぼ同じで、removeLast() を引数なしで使った時には、一番最後の要素を削除して、戻り値として削除した要素を返します。
removeLast(削除する要素数) のように、引数に削除する要素数を指定すると、一番最後から指定した数の要素を削除し、この場合は戻り値はありません。
それでは、removeLast() を使って要素を削除してみましょう。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
print(names)
let removed = names.removeLast()
print(names)
print(removed)
実行結果は次のようになり、names からは一番最後の Yamada が削除され、removed という変数に削除された要素が取得できているのがわかります。
["Tanaka", "Suzuki", "Sato", "Yamada"]
["Tanaka", "Suzuki", "Sato"]
Yamada
また、後ろから 2 個、要素を削除したいのであれば、次のようにできます。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
print(names)
names.removeLast(2)
print(names)
実行結果は次のようになり、names 配列の後ろから二つの要素が削除されています。
["Tanaka", "Suzuki", "Sato", "Yamada"]
["Tanaka", "Suzuki"]
removeAll() で Array の全ての要素を削除する
Swift の Array(配列)の全ての要素を削除したい時には removeAll() メソッドを使います。
removeAll() を使って全ての要素を削除してみます。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
print(names)
names.removeAll()
print(names)
実行結果は次のようになり、全ての要素が削除されているのがわかります。
["Tanaka", "Suzuki", "Sato", "Yamada"]
[]
removeAll(where:) で配列から値を指定して要素を削除する
removeAll(where:) メソッドを使って、削除したい値を指定して、配列からその値の要素を全て削除することができます。
例えば、["Tanaka", "Suzuki", "Sato", "Yamada", "Suzuki"] という配列から "Suzuki" を削除したいのであれば次のように指定できます。
var names = ["Tanaka", "Suzuki", "Sato", "Yamada", "Suzuki"]
print(names)
names.removeAll(where: {$0 == "Suzuki"})
print(names)
実行結果は次のようになり、"Suzuki" の要素が全て削除されています。
["Tanaka", "Suzuki", "Sato", "Yamada", "Suzuki"]
["Tanaka", "Sato", "Yamada"]
以上、Swift の Array(配列)から要素を削除する方法についてご説明しました。