# Swift 數組之基本操作
假如有如下數組變量:
```
var numbers = [1,2,3,4,5]
var vowels = ["A","E","I","O","U"]
var emptyArray = [Int]()
```
## 數組查找
### 獲取數組元素個數
```
vowels.count
```
### 判斷數組是否為空
```
numbers.isEmpty
emptyArray.isEmpty
```
### 獲取數組元素
```
vowels[1] // E
```
### 獲取數組中第一個元素,返回的是可選型
```
vowels.first // A
```
### 獲取數組中最后一個元素,返回可選型
```
vowels.last // U 或者 vowels[ vowels.count - 1 ]
emptyArray.first // nil
if let firstVowel = vowels.first{
"The first vowel is " + firstVowel
}
```
### 獲取最小,最大值
```
numbers.min() // 1
vowels.max() // U
```
### 使用范圍獲取數組的子數組
```
numbers[2..<4]
numbers[2..<numbers.count]
```
### 判斷某個數組是否包含某個值(返回布爾類型)
```
vowels.contains("A") // true
vowels.contains("B") // false
```
### 遍歷數組
普通遍歷數據方式
```
for number in numbers{
number
}
// 想當于
for index in 0..<numbers.count{
numbers[index]
}
```
遍歷數組同時獲取數組的索引
```
for (index , value) in vowels.enumerated() {
print("\(index+1) : \(value)")
}
```
### 數組的比較(比較的是值)
```
var oneToFive = [1, 2, 3, 4, 5]
numbers == oneToFive // true
var oneToFive2 = [1, 2, 4, 3, 5]
numbers == oneToFive2 // false
```
## 數組的增刪改操作
假如有如下數組變量。
```
var list = ["Apple", "Orange"]
```
### 新增
#### 新增數組元素
下面列舉一些新增數組元素的方法。
```
list.append("Pear")
list += ["Banner"] // 使用 += 的方式添加數組元素必須添加的是一個數組,并且數組中的類型要與之前的一直,比如這里的字符串
list = list + ["Watermelon","Grape"]
list // ["Apple", "Orange", "Pear", "Banner", "Watermelon", "Grape"]
```
#### 新增數組單元到指定索引處
在Swift中可以很方便的將元素添加到某個索引值的位置,換言之填寫的索引為新增的元素所在的索引位置。
```
list.insert("Cantaloupe", at: 2)
list // ["Apple", "Orange", "Cantaloupe", "Pear", "Banner", "Watermelon", "Grape"]
```
> 注意:小心數組越界的問題。
### 刪除元素
#### 刪除第一個元素
快速刪除數組的第一個元素。
```
list.removeFirst()
list // ["Orange", "Cantaloupe", "Pear", "Banner", "Watermelon", "Grape"]
```
#### 刪除最后一個元素
快速刪除數組的最后一個元素
```
list.removeLast()
list // ["Orange", "Cantaloupe", "Pear", "Banner", "Watermelon"]
```
#### 根據索引刪除數組單元
```
list.remove(at: 1)
list // ["Orange", "Pear", "Banner", "Watermelon"]
```
> 注意:小心數組越界的問題。
#### 根據范圍刪除數組單元
```
list.removeSubrange(0..<2)
list // ["Banner", "Watermelon"]
```
> 注意:小心數組越界的問題。
#### 刪除所有數組單元
```
list.removeAll()
list // []
```
### 修改
#### 修改具體元素
```
list = ["Apple","Orange","Pear","Watermelon"]
list[0] = "Banner"
print(list) // ["Banner", "Orange", "Pear", "Watermelon"]
```
#### 根據區間范圍修改元素
先獲取元素的值然后進行賦值修改。
```
list[1...2] = ["Cantaloupe","Grape"]
print( list ) // ["Banner", "Cantaloupe", "Grape", "Watermelon"]
```
#### 修改范圍
```
list[1...3] = ["Grape"]
print( list ) // ["Banner", "Grape"]
```
> 無論是使用索引還是使用區間修改數組,都可能產生數組越界的問題。
### 其他操作
#### filter
`filter(includeElement: (T) -> Bool) -> [T]`
```
let bigNumbers = [2, 47, 118, 5, 9].filter({ $0 > 20 }) // bigNumbers = [47, 118]
```
#### map
`map(transform: (T) -> U) -> U`
```
let stringified; [String] = [1, 2, 3].map({ String($0) }) // ["1", "2", "3"]
```
#### refuce
`reduce(initial: U, combine: (U, T) -> U) -> U`
```
let sum: Int = [1, 2, 3].reduce(0){ $0 + $1} // add up the numbers in the Array.
let sum = [1, 2, 3].reduce(0, +) // some thing because `+` is a function in Swift.
```
- 學習筆記
- 基礎
- 基本類型之整型
- 基本類型之浮點型
- 基本類型之布爾類型以及簡單的 if 語句
- 基礎類型之元組
- 基本類型之其他
- 運算符
- 基礎運算符
- 比較運算符、邏輯運算符
- 三元運算符
- 范圍運算符for-in
- 邏輯控制
- 循環結構
- 選擇結構
- 字符串
- Character和Unicode
- String.index 和 range
- 可選型
- 容器類
- 數組初始化
- 數組基本操作
- 字典初始化
- 字典基本操作
- 集合初始化
- 集合基本操作
- 函數
- 閉包
- 枚舉
- 結構體
- 類
- 文檔注釋
- 屬性和方法
- 下標和運算符重載
- 拓展和泛型
- 協議
- 其他
- Swift 3.0 For 循環
- Swift 隨機數的生成
- IOS開發玩轉界面 UIKit
- UILable 文本顯示控件
- UIButton 簡單的交互控件
- UIImageView 圖片控件
- UISearchBar 搜索控件