【Swift/SwiftUI】配列で使用可能な便利メソッド・プロパティ一覧

本記事ではSwift/SwiftUIにおいて、配列において提供されているメソッドとプロパティについて、日常遣いができて便利なものの一覧をご紹介していきます。

配列のメソッド・プロパティとは

メソッドとはオブジェクト内で定義されている処理や関数であり、プロパティはオブジェクト内で定義されている変数や定数などを表します。

Swiftでは、配列というデータ型のオブジェクトに対して複数のメソッドやプロパティを用意してくれています。

実装側で配列の中身を1件1件確認して各要素に対して処理を行わずとも、以下で紹介するメソッドやプロパティを使用することによって、簡単に配列の要素を取得、追加、更新などを行うことができます。

メソッド一覧

以降では、以下のInt型が入ったnumbersという配列を用いて配列にて使用可能なメソッド・プロパティを紹介していきます。

var numbers = [1, 10, 50, 100, 100]

要素数をカウント

配列の要素数を返却するプロパティです。配列が空の場合には0を返却します。

numbers.count
//実行結果: 5

空か判定

配列の要素数が0件の場合にtrueを返却し、1件以上の場合にfalseを返却します。

numbers.isEmpty
//実行結果: false

最初の要素を取得

配列の先頭の要素、インデックスでは0番目の要素を返却します。

配列が空の場合にはnilを返却します。

numbers.first
//実行結果: 1

指定した要素を検索

パラメータofに指定した値のインデックスを返却します。指定した値が複数ある場合でも、先頭の1件のインデックスを返却します。

指定した値がない場合にはnilを返却します。

numbers.firstIndex(of: 50)
//実行結果: 2
numbers.firstIndex(of: 2)
//実行結果: nil

先頭から指定した数の要素を取り出す

先頭からパラメータに指定した個数分の要素を返却するメソッドです。

配列の要素数より大きい値を指定した場合には、配列を全て返却します。

numbers.prefix(3)
//実行結果: [1, 10, 50]

先頭から指定したインデックスまでの要素を取り出す

先頭からパラメータthroughに指定したインデックスまでの要素を返却するメソッドです。

numbers.prefix(through: 2)
//実行結果: [1, 10, 50]

末尾から指定した数の要素を取り出す

末尾からパラメータに指定した要素数を返却するメソッドです。

配列の要素数より大きい値を指定した場合には、配列を全件返却します。

numbers.suffix(2)
//実行結果: [100, 1000]

指定したインデックスから末尾までの要素を取り出す

末尾から指定したインデックスまでの要素を返却するメソッドです。

存在しないインデックスを指定するとエラーとなります。

numbers.suffix(from: 2)
//実行結果: [50, 100, 1000]

ランダムに要素を1つ取り出す

配列の中からランダムな要素を1つ返却するメソッドです。

要素数が0の場合にはnilを返却します。

numbers.randomElement()
//実行結果: 100

配列同士の比較

パラメータに配列を渡し、配列の各要素の値と格納されている順番が等しい場合にtrueを返却するメソッドです。

値が異なる、順番が異なる、要素数が異なる場合にはfalseを返します。

var sub_numbers = [2, 20, 200]
numbers.elementsEqual(sub_numbers)
//実行結果: false

指定した値が含まれるか確認

パラメータに指定された値が配列内に含まれる場合にtrueを返却するメソッドです。

値が含まれない場合や配列が空の場合にはfalseを返却します。

numbers.contains(100)
//実行結果: true

配列内の最大値を取得

配列内で最も値の大きい要素を返却するメソッドです。

配列が空の場合にはnilを返却します。

numbers.max()
//実行結果: 1000

配列内の最小値を取得

配列の中で最も値の小さい要素を返却するメソッドです。

配列が空の場合にはnilを返却します。

numbers.min()
//実行結果: 1

先頭から指定した要素数を除いた配列を取得

配列の先頭からパラメータに指定した値の個数分の要素を取り除いた配列を返却するメソッドです。

配列が空の場合、あるいは要素数を超える値をパラメータに指定した場合には空の配列を返却します。

numbers.dropFirst(2)
//実行結果: [50, 100, 1000]

末尾から指定した要素数を除いた配列を取得

配列の末尾からパラメータに指定した値の要素数を除いた配列を返却するメソッドです。

パラメータを指定しない場合には末尾の要素を取り除いた配列を返却します。

配列が空の場合、あるいは要素数を超える値をパラメータに指定した場合には空の配列を返却します。

numbers.dropLast(2)
//実行結果: [1, 10, 50]

昇順に並べ替える

要素を昇順に並べ替えた配列を返却するメソッドです。

numbers.sorted()
//実行結果: [1, 10, 50, 100, 1000]

配列の順序を逆に

配列の要素を元の順番とは逆順に並べ替えた配列を返却するメソッドです。

reversed()メソッドは配列ではなくReversedCollectionを返却するため、値の取り出しなどの際にはArray()などを使用して配列にキャストする必要があります。

Array(numbers.reversed())
//実行結果: [1000, 100, 50, 10, 1]

要素をランダムに並べ替えた配列を返す

配列の要素をランダムに並べ替えた配列を返却します。

numbers.shuffled()
//実行結果: [10, 100, 1, 1000, 50]

配列を分割

パラメータに指定した要素を区切り文字として分割した配列を返却するメソッドです。

splitメソッドにはパラメータのseparatorに要素を指定し、指定した要素で分割した配列を内包した配列を返却します。パラメータに指定した値は、返却される配列に含まれない点にご注意ください。

var split_numbers = numbers.split(separator: 10)
print(split_numbers[0])
//実行結果: [1]
print(split_numbers[1])
//実行結果: [50, 100, 1000]

パラメータに指定した要素が存在しない場合には、0番目に元の配列が入った配列を返却します。

var split_numbers = numbers.split(separator: 20)
print(split_numbers[0])
//実行結果: [1, 10, 50, 100, 1000]

配列同士を結合

複数の配列同士を結合するには、+演算子を使います。

+演算子を使用して配列を結合した場合には、+演算子の前の配列の末尾に後ろの配列の要素が単純に加算される形になります。

var numbers = [1, 10, 50, 100, 1000]
var sub_numbers = [2, 20, 200]
var new_numbers = numbers + sub_numbers
//実行結果: [1, 10, 50, 100, 1000, 2, 20, 200]

最後に

本記事では、Swiftで配列を扱う際に頻出するメソッドとプロパティの一覧をご紹介しました。

他にもSwiftで開発を行う際に欠かすことのできないオプショナル型データについて、安全にアンラップを行う方法や暗黙的オプショナル型というデータ型についても別の記事で解説していますのでそちらもご確認ください。