1. 數(shù)組聲明
// 系統(tǒng)識(shí)別結(jié)果為 array 是一個(gè)元素是Int類型的數(shù)組
let array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
// 系統(tǒng)識(shí)別為array 是一個(gè)元素是字符串類型的數(shù)組, 默認(rèn)是空數(shù)組
var array: [String] = []
// 系統(tǒng)識(shí)別為array 是一個(gè)元素是字符串類型的可選數(shù)組
var array: [String]?
// 系統(tǒng)識(shí)別為array 是一個(gè)元素是字符串類型的可選數(shù)組, 默認(rèn)是nil
var array: [String]? = nil
2. index: 獲取下標(biāo)
// 從下標(biāo)2開(kāi)始 往后第3個(gè)元素
// 返回對(duì)應(yīng)的下標(biāo)
let mm = array.index(2, offsetBy: 3)
// limitedBy: 從下標(biāo)0-下標(biāo)3范圍內(nèi)查找 從下標(biāo)1開(kāi)始, 往后第2個(gè)元素
// 返回對(duì)應(yīng)下標(biāo), 是一個(gè)可選值
let kk = array.index(1, offsetBy: 2, limitedBy: 3)
// 找出元素3 在數(shù)組中第一次出現(xiàn)的下標(biāo), 返回可選的下標(biāo)值
let index = array.firstIndex(of: 3)
// 找出元素3 在數(shù)組中最后一次出現(xiàn)的下標(biāo), 返回可選的下標(biāo)值
let index = array.lastIndex(of: 3)
3. append: 添加元素
// 添加一個(gè)元素, 返回新數(shù)組
let newArray = array.append(9)
// 添加多個(gè)元素, 返回新數(shù)組
let newArray = array.append(contentsOf: [20, 21])
3.1 insert: 插入元素, 改變?cè)瓟?shù)組, 無(wú)返回值
// 給下標(biāo)n位置插入一個(gè)元素, n不能越界
array.insert(100, at: 3)
// 給下標(biāo)n位置插入多個(gè)元素, n不能越界
array.insert(contentsOf: [100, 200], at: 3)
4. remove: 刪除元素, 改變?cè)瓟?shù)組, 無(wú)返回值
if let range = Range(NSRange(location: 0, length: 4)) {
// 刪除指定范圍的元素
// Range必須解包, 需要注意數(shù)組越界crash
array.removeSubrange(range)
}
// 刪除所有元素
array.removeAll()
// 刪除所有元素, 保持?jǐn)?shù)組的容量不變
array.removeAll(keepingCapacity: true)
// 刪除元素值為 3 的元素
array.removeAll { (item) -> Bool in
item == 3
}
// 刪除下標(biāo)為3的元素
array.remove(at: 3)
// 刪除最后一個(gè)元素
array.removeLast()
// 刪除第一個(gè)元素
array.removeFirst()
// 逆向刪除3個(gè)元素
array.removeLast(3)
// 正向刪除3個(gè)元素
array.removeFirst(3)
5. drop: 丟棄元素, 返回新數(shù)組
// 丟棄數(shù)組第一個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropFirst()
// 丟棄數(shù)組最后一個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropLast()
// 逆向丟棄數(shù)組5個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropLast(5)
// 正向丟棄數(shù)組5個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropFirst(5)
// 丟棄符合條件的元素
// 注意 閉包內(nèi)如果返回了false 則不會(huì)繼續(xù)執(zhí)行, 按需使用
// 你可以試試將 item != 3 改為 item == 3
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
let newArray = array.drop { (item) -> Bool in
print("item = \(item)")
return item != 3
}
print("newArray = \(newArray)")
// log結(jié)果:
// item = 0
// item = 1
// item = 2
// item = 3
// newArray = [3, 4, 5, 6, 7, 8]
6. prefix: 正向獲取前n個(gè)元素, 返回新數(shù)組
// 取前n個(gè)元素 返回新數(shù)組, n可以越界, 越界后返回完整數(shù)組
let newArray = array.prefix(3)
// 取下標(biāo)n之前的元素, 不包含第n個(gè)元素 n不能越界
let newArray = array.prefix(upTo: 3)
// 取下標(biāo)n之前的元素, 包含第n個(gè)元素 n不能越界
let newArray = array.prefix(through: 3)
// 正向遍歷 不符合條件立即終止程序
let newArray = array.prefix { (item) -> Bool in
return item != 4
}
7. suffix: 取后n個(gè)元素,非逆序, 返回新數(shù)組
// 取后n個(gè)元素 返回新數(shù)組,n可以越界, 越界后返回完整數(shù)組
let newArray = array.suffix(3)
// 取下標(biāo)為n的元素之后的所有元素, n不可以越界
let newArray = array.suffix(from: 3)
8. replace: 用新數(shù)組替換指定范圍內(nèi)的元素
if let range = Range(NSRange(location: 0, length: 3)) {
array.replaceSubrange(range, with: [20, 30, 40])
}
9. first: 查第一個(gè)元素
// 獲取數(shù)組第一個(gè)元素, 返回可選值, 不存在第一個(gè)元素則返回nil
let element = array.first
// 獲取符合條件后的第一個(gè)元素, 返回可選值, 不存在則返回nil
let element = array.first { (item) -> Bool in
return item > 4
}
// 獲取符合條件后的第一個(gè)元素
// 另一種簡(jiǎn)潔寫(xiě)法
let element = array.first{ $0 > 4 }
10. last: 查最后一個(gè)元素
// 獲取數(shù)組最后一個(gè)元素, 返回可選值, 不存在則返回nil
let element = array.last
11. 普通查找
// 查找下標(biāo)為4的元素, 返回?cái)?shù)組元素, 注意不能越界
let element = array[4]
12. 修改指定元素
// 將下標(biāo)為4 的元素值修改為100, 注意不能越界
array[4] = 100