見出し画像

この世でいちばんわかりやすいiPhoneアプリ開発のおはなし【配列の操作を学ぶ】

配列の基本について知っておくと、このページの理解が深まります。配列の基本については、こちらのページで説明しています。

空の配列を作成する

配列のメソッドやインデックスを駆使して、そこに含まれる要素を操作できます。 配列の基本操作は、要素の追加、挿入、更新、削除の4つです。
ここでは、GAFAと呼ばれる世界のビッグテックを配列として扱うことにします。 GAFAは「Google、Amazon、Facebook、Apple」の4社を指します。

まずは、操作対象となる配列データを作成しましょう。

var gafa: [String] = []

上のコードは、文字列を要素とする空の配列インスタンスを作成します。 このgafa配列は、型アノテーションにより「要素はString型である」ことが明示されています。 したがって、String以外の型の値を要素として追加することはできません。

実際に「配列が空である」ことを確認するには、いくつかの方法があります。

gafa.isEmpty   // true
gafa.count     // 0

isEmptyプロパティは、配列が空である場合にtrueを、そうでない場合はfalseを返します。 gafa配列のisEmptyプロパティはtrueを返すので、必然的に要素数は0です。

また、空の配列に対して「先頭の要素」を確認するためにfirstプロパティを呼び出すと、結果は「値がない状態」を示すnilです。

gafa.first     // nil

なお、配列の先頭要素がnilだからといって、必ずしも「配列が空である」わけではありません。

要素を追加する

それでは、gafa配列に要素を追加していきましょう。

配列に要素を追加するには、append(_:)メソッドを呼び出して、パラメータに「追加したい要素」を指定します。 append(_:)メソッドは、パラメータに指定された値を配列の最後尾に追加します。

gafa.append("Google")
print(gafa)    // ["Google"]

上のコードは、gafa配列に"Google"を追加します。

append(contentOf:)メソッドを使って、配列に「それと同じ型の配列」ごと追加することも可能です。

gafa.append(contentsOf: ["Amazon", "Facebook"])
print(gafa)    // ["Google", "Amazon", "Facebook"]

このような配列の結合は、複合代入演算子+=を使って記述することもできます。

gafa += ["Apple", "Microsoft"]
print(gafa)    // ["Google", "Amazon", "Facebook", "Apple", "Microsoft"]

配列に追加した要素は、最後尾になることを覚えておきましょう。

要素を挿入する

次は、配列に要素を挿入します。 挿入は、配列内の任意の場所に要素を追加します。

配列に要素を挿入するには、insert(_:)メソッドを使って「値」と「位置のインデックス」を指定します。

gafa.insert("Sony", at: 0)
print(gafa)

上のコードは、「ソニー」をゼロ番目の位置(つまり、先頭)に挿入します。

こちらも、insert(contentOf:)メソッドを使って配列ごと挿入することができます。

gafa.insert(contentsOf: ["Twitter", "IBM"], at: 5)
print(gafa)

上のコードは、「ツイッターとアイ・ビー・エム」を5番目の位置(つまり、アップルとマイクロソフトの間)に挿入します。

要素を更新する

続いて、要素の更新を行いましょう。 配列に含まれる要素の値を更新するには、代入演算子=を使って「変更する要素のインデックス」に「新しい値」を設定します。

ここでは、「ツイッター」と「ネットフリックス」に変更してみましょう。

まずは、「変更する要素のインデックス」を知る必要があります。 firstIndex(of:)メソッドを使うと、「その要素が配列の左から何番目にあるか」を調べることができます。

gafa.firstIndex(of: "Twitter")     // 5

上のコードを実行した結果は5になります。 つまり、「ツイッターは、配列の5番目にある」ことを示しています。

このインデックスを添え字に指定したら、代入演算子=を使って新しい値を設定します。

gafa[5] = "Netflix"
print(gafa)

上のコードは、「ツイッター」が「ネットフリックス」に更新されたことを示しています。

要素を削除する

最後は、要素の削除です。 配列の要素を削除するには、remove(_:)メソッドを呼び出して、インデックスを指定します。

gafa配列から「ネットフリックス」を削除しましょう。

gafa.remove(at: 5) // "Netflix"
print(gafa)

定義を見るとわかるように、remove(at:)メソッドは「削除した要素」を返します。 したがって、確認のために「削除された要素」を保持することができます。

let removedItem = gafa.remove(at: 5)
print("\(removedItem) was removed from GAFA." )
print(gafa)

配列の先頭要素や最後尾要素を削除する場合は、removeFirst()メソッドとremoveLast()メソッドを使用できます。

gafa.removeFirst()
print(gafa)

上のコードは、gafa配列から先頭要素の「ソニー」を削除します。

先頭や最後尾から数えた分だけ削除したい場合、removeFirst(_:)メソッドとremoveLast(_:)メソッドを使用できます。 先ほどとは違い、「いくつ分を削除するか」を示すパラメータを受け取る点に注意してください。

gafa.removeLast(2)
print(gafa)

配列データには、世界の4大テック「グーグル、アマゾン、フェイスブック、アップル」が並んでいます。 配列に並んでいる要素には順番があります。 追加・挿入・削除の操作を行わない限り、要素の並びが勝手に入れ替わることはありません。 また、要素の重複が発生する可能性もあるので、注意しましょう。

この記事が気に入ったらサポートをしてみませんか?