SwiftでArrayの中から1種類づつを抽出したい。

投稿者: Anonymous

お世話になっております。
表題の通りですが、Arrayの中から下記のようにデータを抽出するにはどうしたら良いのか?を教えていただきたいです。

Apple
Apple
Google
Google
Facebook
Facebook
Apple
Google
Facebook
Apple
Google
Apple

という配列を
Apple
Google
Facebook
という配列に変換したいです。

一番目のAppleと2番目のStringを比較してAppleと同じであれば消去。
違っていればスルー。
一番目のAppleと3番目のStringを比較して同じであれば消去。
違っていればスルー・・・。
という具合に比較して、順番に数を減らして行き最終的に、
Apple
Google
Facebook
という配列に変換したいです。

下記のようのコードを途中まで作ってみたのですが、比較する回数、11回のはずですがそれが違うようです。
そもそも11回にならない理由がわかりません。
よろしくお願いします。

var strArray = [“Apple”, “Apple”, “Google”,”Google”, “Facebook”,
“Facebook”,”Apple”, “Google”, “Facebook”,”Apple”, “Google”,”Apple”]
var c = strArray.count – 1
var x:Int = 0
var z:Int = 0
if c > 2 {
for i in 1…c{
if strArray[x] == strArray[x + z] {
strArray.removeAtIndex(x + z)
}
z = z + 1
print(strArray)
 }
}

解決

元の配列の順序が維持されないかもしれませんが、別解です。

var strArray = ["Apple", "Apple", "Google","Google", "Facebook",
    "Facebook","Apple", "Google", "Facebook","Apple", "Google","Apple"]
strArray = Array(Set(strArray))
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *