Swift-陣列(Arrays)

weixin_34138377發表於2017-01-10

本文屬個人筆記,不做詳解,僅供參考
參考文章:http://www.swift51.com/swift.html

陣列使用有序列表儲存同一型別的多個值。相同的值可以多次出現在一個陣列的不同位置中。

注意: Swift 的Array型別被橋接到Foundation中的NSArray類。 更多關於在Foundation和Cocoa中使用Array的資訊,參見 Using Swift with Cocoa and Obejective-C 一書。

陣列的簡單語法

寫 Swift 陣列應該遵循像 Array<Element>這樣的形式,其中 Element是這個陣列中唯一允許存在的資料型別。我們也可以使用像 [Element]這樣的簡單語法。儘管兩種形式在功能上是一樣的,但是推薦較短的那種,而且在本文中都會使用這種形式來使用陣列。

陣列的建立

我們可以使用構造語法來建立一個由特定資料型別構成的空陣列:

var someInts = [Int]()
print("someInts is of type [Int] with \(someInts.count) items.")
// 列印 "someInts is of type [Int] with 0 items."

注意,通過建構函式的型別,someInts的值型別被推斷為[Int]。

或者,如果程式碼上下文中已經提供了型別資訊,例如一個函式引數或者一個已經定義好型別的常量或者變數,我們可以使用空陣列語句建立一個空陣列,它的寫法很簡單:[](一對空方括號):

someInts.append(3)
// someInts 現在包含一個 Int 值
someInts = []
// someInts 現在是空陣列,但是仍然是 [Int] 型別的。

訪問和修改陣列

我們可以通過陣列的方法和屬性來訪問和修改陣列,或者使用下標語法。
可以使用陣列的只讀屬性count來獲取陣列中的資料項數量:

print("The shopping list contains \(shoppingList.count) items.")
// 輸出 "The shopping list contains 2 items."(這個陣列有2個項)

使用布林值屬性isEmpty作為檢查count屬性的值是否為 0 的捷徑:

if shoppingList.isEmpty { 
print("The shopping list is empty.")
} else { 
print("The shopping list is not empty.")
}
// 列印 "The shopping list is not empty."(shoppinglist 不是空的)

也可以使用append(_:)方法在陣列後面新增新的資料項:

shoppingList.append("Flour")
// shoppingList 現在有3個資料項,有人在攤煎餅

除此之外,使用加法賦值運算子(+=)也可以直接在陣列後面新增一個或多個擁有相同型別的資料項:

shoppingList += ["Baking Powder"]
// shoppingList 現在有四項了
shoppingList += ["Chocolate Spread", "Cheese", "Butter"]
// shoppingList 現在有七項了

可以直接使用下標語法來獲取陣列中的資料項,把我們需要的資料項的索引值放在直接放在陣列名稱的方括號中:

var firstItem = shoppingList[0]
// 第一項是 "Eggs"

陣列的遍歷

我們可以使用for-in迴圈來遍歷所有陣列中的資料項:

for item in shoppingList { 
print(item)
}
// Six eggs
// Milk
// Flour
// Baking Powder
// Bananas

如果我們同時需要每個資料項的值和索引值,可以使用 enumerate()方法來進行陣列遍歷。 enumerate()返回一個由每一個資料項索引值和資料值組成的元組。我們可以把這個元組分解成臨時常量或者變數來進行遍歷:

for (index, value) in shoppingList.enumerate() { 
print("Item \(String(index + 1)): \(value)")
}
// Item 1: Six eggs
// Item 2: Milk
// Item 3: Flour
// Item 4: Baking Powder
// Item 5: Bananas

陣列的應用

陣列去重

var array = [String]()
let result = Array(Set(array))

獲取指定元素在陣列中的位置

let index = array.indexOf(“XX”)

刪除指定位置元素

array.removeAtIndex(index)

建立重複陣列

array = Array.init(count:重複次數, repeatedValue:值)

陣列與字串互轉:
String->Array

let str = “sh,dfbg,e,f,v,vfgrt”
let strArray =str.componentsSeparatedByString(“,”)

Array->String

let strArray = [“a”,”b”,”c”]
let str = strArray.joinWithSeparator(“,”)

相關文章