【Swift/SwiftUI】配列のプロパティ一覧

本記事では、Swiftで使用する配列に対して使用することができるプロパティを列挙してそれぞれの使い方について解説していきます。

本記事をご覧いただければ、配列を自由自在に扱って無駄な処理を省略して綺麗なソースを書くことがきっとできるでしょう。

配列の宣言方法や値の取り出し方については以下の記事をご覧ください。

配列のプロパティ一覧

配列の要素数を数える

countプロパティを使用することで、配列の中に入っている要素の個数を数えることができます。countプロパティの戻り値はInt型で取得することができます。

var members = ["田中","山本","山田"]
members.count    // 3

var week: [String] = []
week.count    // 0

配列が空か判定

isEmptyを使用すると、配列の要素数が0件の空の配列かどうかを確認することができます。isEmptyの戻り値は真偽値で、対象の文字列が空であればtrueを、そうでなければ falseを返します。

配列は存在しない要素のインデックス番号を指定するとエラーとなってしまうため、配列を使用した処理を実行する前にisEmptyを使用して配列の要素が存在するかどうかを確認するとプログラムの安全性が高まります。

var members = ["田中","山本","山田"]
members.isEmpty   // false

var week: [String] = []
week.isEmpty    // true

配列の最初の要素を取得

firstを使用することで、配列の最初の要素、つまり0番目の要素を取得することができます。

firstの戻り値は配列の値を直接返すのではなく、オプショナル型のデータで返却される点には注意が必要です。オプショナル型として返却される理由は、空の配列に対してfirstを使用した際の戻り値がnilとなるためです。

var members = ["田中","山本","山田"]
members.first   // Optional("田中")

var week: [String] = []
week.first    // nil

オプショナル型については以下で解説していますのでぜひご覧ください。

配列の最後の要素を取得

lastを使用すると配列の最後の要素を取得することができます。firstと同様に配列内の要素がオプショナル型で返却され、空の場合にはnilが返ります。

lastやfirstを使用する際に配列の要素が確実に1つ以上存在することが保証されている場合には、オプショナル型から強制アンラップをして直接IntやStringの値を取り出すこともできます。

また、要素数が1の配列にlastを使用すると先頭の要素が返却されます。

var members = ["田中","山本","山田"]
members.last   // Optional("山田")

//強制アンラップ
members.last!   // 山田

var week: [String] = []
week.last    // nil

配列からランダムに値を取得

randomElement()を使用して、配列からランダムに要素を一つ取得することができます。配列内の要素がオプショナル型で返却され、空の場合にはnilが返ります。

例えば、じゃんけんアプリやルーレットアプリなどを実装する際に使えそうな機能です。

var members = ["田中","山本","山田"]
members.randomElement()   // Optional("山本")
members.randomElement()   // Optional("田中")

配列の最大値を取得

max()を使用することで、配列の中で一番値の大きい要素を取得することができます。配列内の要素は、オプショナル型で返却され、空の場合にはnilが返ります。

また、max()や下で紹介するmin()は、数値だけでなく文字列の比較にも使用することが可能です。

var numbers = [1,29,13,7,19,5,17,23,11,3]
print(numbers.max())    //Optional(29)

配列内の最小値を取得

min()を使用することで、配列の中で一番値の小さい要素を取得することができます。配列内の要素は、オプショナル型で返却され、空の場合にはnilが返ります。

var numbers = [1,29,13,7,19,5,17,23,11,3]
print(numbers.min())    //Optional(1)

配列を昇順にソート

sorted()を使用することで、元の配列の値を昇順にソートした配列を戻り値として取得することができます。空の配列に対してsorted()を使用した場合には、そのまま空の配列が返却されます。

sorted()の戻り値として、ソートされた新たな配列が返却されるため、元の配列の並び順が変更されるわけではない点には注意してください。そのため、ソート後の配列を保存して使用するには別の変数に代入する必要があります。

var numbers = [1,29,13,7,19,5,17,23,11,3]
var sortedNumbers = numbers.sorted()
print(sortedNumbers)    //[1, 3, 5, 7, 11, 13, 17, 19, 23, 29]
print(numbers)          //[1, 29, 13, 7, 19, 5, 17, 23, 11, 3]

配列を降順にソート

昇順ソートの際と同様のsorted()に対して「by」パラメータを渡すことで、元の配列の値を降順にソートした配列を戻り値として取得することができます。

var numbers = [1,29,13,7,19,5,17,23,11,3]
var sortedNumbers = numbers.sorted(by: >)
print(sortedNumbers)    //[29, 23, 19, 17, 13, 11, 7, 5, 3, 1]
print(numbers)          //[1, 29, 13, 7, 19, 5, 17, 23, 11, 3]

また、sorted()はパラメータなしで昇順に並び替えることができますが、明確にパラメータを渡してnumbers.sorted(by: <)のようにすることでも昇順でのソートが可能です。

配列の順番を逆に並べ替えた配列を取得

reversed()を使用することで、配列の要素の順番を逆に入れ替えたことを意味するコレクションを取得することができます。sorted()と同様に下の配列の順番は変更されません。空の配列を使用した場合には、空のコレクションが返却されます。

var numbers = [1,29,13,7,19,5,17,23,11,3]
var reversedNumbers = numbers.reversed()
print(reversedNumbers)    //ReversedCollection<Array<Int>>(_base: [1, 29, 13, 7, 19, 5, 17, 23, 11, 3])

reversed()の戻り値は、コレクション型のため配列として使用する際には配列型に変換する必要があります。

上記のコードではprintで表示されているデータの順番が変わっていないように見えますが、ReversedCollectionという形のコレクションで、配列として取り出した際には順番が入れ替わった配列を取得することができます。

var numbers = [1,29,13,7,19,5,17,23,11,3]
var reversedNumbersArray = Array(numbers.reversed())
print(reversedNumbersArray)     //[3, 11, 23, 17, 5, 19, 7, 13, 29, 1]

最後に

本記事では、Swiftの配列に対して使用可能なプロパティの一覧をご紹介してきました。

他にもSwiftやSwiftUIでのリストの作成方法やリストにスワイプアクションを付与する方法についても解説していますのでぜひご確認お願いします。