![見出し画像](https://assets.st-note.com/production/uploads/images/53421949/rectangle_large_type_2_4e7d1bad72225f8af3e26929876f45a2.jpeg?width=1200)
この世でいちばんわかりやすい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大テック「グーグル、アマゾン、フェイスブック、アップル」が並んでいます。 配列に並んでいる要素には順番があります。 追加・挿入・削除の操作を行わない限り、要素の並びが勝手に入れ替わることはありません。 また、要素の重複が発生する可能性もあるので、注意しましょう。