Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. SwiftBeginner - Adding and Removing Array Elements

Adding and Removing Array Elements - Japanese Only

みなさまどうもおはこんばんにちは。

さて、前回の記事では配列の基本的なところを解説しましたので今回は配列の要素を追加したり削除したりといったところをやっていきましょう。

というわけで以下のサンプルをちょいと見てみてください。

var arr = [0, 1]

上記のサンプルは要素『0』と要素『1』を持つ配列『arr』を定義している感じですね。なので『配列』の全要素数は2個、最後のインデックス(インデックス番号)は『0』から数え始めるため『1』になります。

この配列の要素を増やしたい、つまりインデックス『2』の要素を追加したい、といった場合に以下のように書くとNGです。以下は数値『2』を追加しようとしたパターンですね。

var arr = [0, 1]

arr[2] = 2 // これはNGです。

これ、他の言語ではOKだったりするのですがSwiftではNGだったりします。

こういう場合は以下のように書きます。

var arr = [0, 1]

arr += [2] // 数値『2』を新しい要素として追加します。

+=』で『[2]』を追加していますね。

ちょっと注意点ですが、以下のようにするとダメです。先ほどとは違い、『[]』で囲ってない状態で渡しています。

var arr = [0, 1]

arr += 2 // エラーです。

『+=』を使用して要素を追加する場合は、追加したい要素を『[]』で囲ってあげた『配列リテラル』とかで渡す必要があります。ここ間違いやすいので気をつけて下さい。

ちなみに上記のサンプル(『[]』で囲わない状態で値を渡す事)は昔はOKだった気がするのですが、最近はダメになっちゃったみたいですね。いつからダメになったのかはちょっと謎です。

そして複数の要素を一度に追加したい、という場合は以下のように『,』で区切って渡してあげればOKです。

var arr = [0, 1]

arr += [2, 3, 4]

print(arr) // 『[0, 1, 2, 3, 4]』が出力されます。

値とかを『[]』でくくらずに渡したい、といった場合は『.append()』っていうのを使用することで実現できます。

『.append()』は配列(配列のインスタンス)に用意されたメソッドで、『配列名.append(追加したい要素)』って感じの記述になります。

var arr = [0, 1]

arr.append(2)

print(arr) // 『[0, 1, 2]』と出力されます。

『.append()』を使って複数の値を同時に追加したい場合は『.append()』の『()』の中で『contentsOf: [要素]』という形で記述します。以下のような形ですね。

var arr = [0, 1]

arr.append(contentsOf: [2, 3]) // 複数の値を同時に追加します。
// arr.append(2, 3) // このような記述だとエラーになりますのでご注意です。

print(arr) // 『[0, 1, 2, 3]』が出力されます。

ちょっと注意点ですが、ちょっと前のSwiftでは『.appendContentsOf()』ってやつがいて、こいつでも複数の値を同時に追加することができました。

var arr = [0, 1, 2]

arr.appendContentsOf([3, 4]) // 昔はこんな感じで追加することができました。

この『.appendContentsOf()』は最新版のSwiftではなくなっちゃいましたので使えません。ご注意下さい。

ちなみに『.append()』を使うよりは『+=』で要素を追加したほうが楽ちんなので『.append()』を使う機会は少なめです。

そして「指定したインデックス番号で要素を入れたいぜ!」といった場合には『.insert()』ってやつを使います。ちょいと以下のサンプルを見てみて下さい。

var arr = [0, 1, 2, 3, 4]

arr.insert(5, at: 2) // インデックス番号『2』の要素として数値『5』を追加します。

print(arr) // 『[0, 1, 5, 2, 3, 4]』が出力されます。

『arr.insert(5, at: 2)』って感じで記述してありますね。『配列名.insert(値, at: 追加したいインデックス番号)』って感じで記述することでインデックス番号を指定しつつ要素を追加することができます。

例えば数値『7』を1番目の要素として追加したい場合はこうなりますね。

var arr = [0, 1, 2, 3, 4]

arr.insert(7, at: 1) // インデックス番号『1』の要素として数値『7』を追加します。

print(arr) // 『[0, 7, 1, 2, 3, 4]』が出力されます。

そんでもってインデックス番号を指定しつつ複数の要素を追加したい場合は『配列名.insert(contentsOf: 配列, at: 追加したいインデックス番号)』と記述します。こんな感じです。『contentsOf:』を入れないといけない、というところに気をつけて下さい。

var arr = [0, 1, 2, 3, 4]

arr.insert(contentsOf: [7, 8], at: 1) // インデックス番号『1』の位置から配列『[7, 8]』を追加します。

print(arr) // 『[0, 7, 8, 1, 2, 3, 4]』が出力されます。

以上がよく使われる配列の追加パターンになりますね。ちょっとややこしくなってきましたが大丈夫そうでしょうか。

ちょっと前のSwiftでは『.insertContentsOf()』ってやつがいて、こいつでもインデックス番号を指定しつつ配列を追加することができました。

var arr = [0, 1, 2, 3, 4]

arr.insertContentsOf([7, 8], at: 1) // 昔はこれでもOKでした。

しかし、こいつも最新版のSwiftではいなくなってしまったのでご注意です。

(´-`).。oO(Swiftはめちゃめちゃアップデートが早いのでご注意くださいませ...)

続いて配列の要素を削除してみましょう。

最初の要素(インデックス番号『0』の要素)を削除するには『.removeFirst()』ってやつを使います。以下のサンプルを見てみて下さい。

var arr = [0, 1, 2, 3, 4]

arr.removeFirst()

print(arr) // 『[1, 2, 3, 4]』が出力されます。

配列『arr』の最初の要素が削除されて『[1, 2, 3, 4]』と出力されていますね。上記のように『配列名.removeFirst()』って感じで記述すれば最初の要素を削除してくれます。

最後の要素を削除したい場合は『配列名.removeLast()』と記述すればOKです。

var arr = [0, 1, 2, 3, 4]

arr.removeLast()

print(arr) // 『[0, 1, 2, 3]』が出力されます。

最後の要素が削除されて『[0, 1, 2, 3]』と出力されていますね。

そして指定したインデックス番号の要素を削除したい、といった場合には『配列名.remove(at: インデックス番号)』って感じで記述します。こんな感じですね。

var arr = [0, 1, 2, 3, 4]

arr.remove(at: 1)

print(arr) // 『[0, 2, 3, 4]』が出力されます。

インデックス番号『1』の数値『1』が削除されているのが確認できたと思います。配列の要素を削除したい場合は上記の3つを覚えておけばOKです。

インデックス番号を指定して要素を削除する場合に、ちょっと前のSwiftでは『.removeAtIndex()』ってやつを使ってもOKでした。記述方法は『配列名.removeAtIndex(インデックス番号)』って感じになりますね。

var arr = [0, 1, 2, 3, 4]

arr.removeAtIndex(1)

これも最新のSwiftではなくなっちゃいましたのでご注意下さい。

Swiftでは『==』や『!=』を使って配列同士の比較を行うことができます。要素数が同じで、かつ中身も同じだった場合に『true』となります。こんな感じですね。

let arr = [0, 1, 2],
    arr1 = [0, 1, 2],
    arr2 = [0, 1, 2, 3]

print(arr == arr1) // true
print(arr != arr1) // false
print(arr == arr2) // false

配列同士の比較処理はたまに使うので覚えておくとよいかもです。

というわけで配列の追加と削除については以上になります。

ただでさえややこしいのに、ちょっと昔のSwiftと最近のSwiftで記述方法が違ったりしてるので大変だったと思いますが大丈夫そうでしょうか。

続いての記事では配列の使い方について色々とみていきましょう。ではこの辺で。失礼致します。

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .