Swift 3.0之後的Array用法記錄以及迴圈遍歷知識點
Swift更新還是蠻快的,以前寫的一下小東西基本上編譯起來都是一片紅,還是稍微記錄下,後期可以幫助自己翻閱
陣列
// 方法1
let arrar1 = ["hehe","haha"];
// 方法2
let arrar2 = [String]()
- 陣列使用[]即可
- 陣列中型別一致,那麼就是該型別的陣列 let arr: [String]
- 陣列中型別不一致,那麼就是any型別的 let arr1: [Any]
基本操作
// 陣列
let arr = ["zhangsan","sli"]
// 這裡列印出來是swift樣式的
print(arr)
for a in arr {
print(a)
}
// 像OC一樣列印
print(arr as NSArray)
// 不同型別的資料就全是物件型別
let arr1 = ["ssa","aaa",1] as [Any]
print(arr1 as NSArray)
let a = 1
var array:[String]
array = ["zhangsan"]
print(array)
// 增加字串
array.append("hehe")
// 陣列基本操作
print(array)
// 拼接基本型別
array.append("\(a)")
// 容量
print(array.capacity)
print(array)
// 刪除下標
array.remove(at: 1)
print(array)
// 刪除全部
array.removeAll(keepingCapacity: true)
print(array.capacity)
// 動態新增成員
for i in 0..<10 {
array.append("\(i)")
// print("\(array)--\(array.capacity)")
}
print(array)
// 陣列拼接
// 初始化
var array2 = [String]()
array2.append("1")
array2.append("2")
array2 += array
print(array2)
- 如果定義陣列時制定了儲存物件的型別,擇不能像陣列裡面新增其他型別
- 可以使用String初始化
- let型別的陣列時不可變的
- var型別的陣列是可變的
1.Range型別遍歷
//for var i=0;i<10;i++{
// print(i)
//}
// Swift迴圈
// 0..<10 代表一個區間返回 0-10 包含頭部,不包含尾部
for i in 0..<10 {
print(i)
}
// _ 代表忽略,如果不關心某個引數,就可以使用_ 使用較多
for _ in 0..<10 {
print("f")
}
// 0...10 <=10
for i in 0...10 {
print(i)
}
2.陣列的enumerated遍歷
1.普通獲取
let lists = [1,2,3,4,5,6,7]
var result = ""
for num in lists.enumerated() {
result += "\(num.offset)---\(num.element)||"
}
print(result)
0---1||1---2||2---3||3---4||4---5||5---6||6---7||
分別列印的是inedx和value
// 元祖型別遍歷
// 可以吧上面的num換成元祖
let lists = [1,2,3,4,5,6,7]
var result = ""
for (index,item) in lists.enumerated() {
result += "\(index)--\(item)||"
}
print(result)
可以看下enumerated為什麼可以用元祖
public func enumerated() -> EnumeratedSequence<Array<Element>>
這東西再點進去就是EnumeratedSequence
型別
這個東西十個結構體,反正按照文件上的註釋來操作,該陣列的每個值都是(index,item的形式,分別代表下標和值)
/// To create an instance of `EnumeratedSequence`, call `enumerated()` on a
/// sequence or collection. The following example enumerates the elements of
/// an array.
///
/// var s = ["foo", "bar"].enumerated()
/// for (n, x) in s {
/// print("\(n): \(x)")
/// }
/// // Prints "0: foo"
/// // Prints "1: bar"
public struct EnumeratedSequence<Base : Sequence> : Sequence
擴充套件下,這個型別結構體裡面還有反向輸出以及過濾輸出等功能
// 反向輸出
let lists = [1,2,3,4,5,6,7]
var result = ""
for (index,item) in lists.enumerated().reversed(){
result += "\(index)--\(item)||"
}
print(result)
6--7||5--6||4--5||3--4||2--3||1--2||0--1||
// 篩選輸出為index是2的倍數的值,這裡可以進行無線擴充套件了,如果需要篩選儘管給需要的條件就好了
let lists = [1,2,3,4,5,6,7]
var result = ""
for (index,item) in lists.enumerated().filter({ (index,item) -> Bool in
return index%2 == 0;
}) {
result += "\(index)--\(item)||"
}
print(result)
0--1||2--3||4--5||6--7||
相關文章
- 【JavaScript實用技巧(一)】迴圈遍歷與跳出迴圈遍歷JavaScript
- JS筆記(2) JS中的迴圈遍歷JS筆記
- 陣列常見的遍歷迴圈方法、陣列的迴圈遍歷的效率對比陣列
- Golang for迴圈遍歷小坑Golang
- php陣列迴圈遍歷PHP陣列
- Go的迴圈遍歷使用小坑Go
- js的map遍歷和array遍歷JS
- JS迴圈遍歷方法總結JS
- 迴圈遍歷二叉樹二叉樹
- python for迴圈遍歷位置的查詢Python
- js 跳出迴圈/結束遍歷的方法JS
- JavaScript中的12種迴圈遍歷方法JavaScript
- 知識點記錄
- 一些知識點的整理以及面試題記錄面試題
- Go語言小知識之map遍歷Go
- python 元組,列表 迴圈遍歷Python
- 記錄的小知識點
- 雙向迴圈連結串列————遍歷、查詢、插入結點
- python 遞迴遍歷目錄Python遞迴
- map遍歷知識總結
- JavaScript中迴圈遍歷JSON響應!JavaScriptJSON
- for in 迴圈遍歷物件時需要注意的事項物件
- python中字典的迴圈遍歷的兩種方式Python
- 學習記錄 -- 知識點
- golang小知識點記錄Golang
- Swift3.0 -- 閉包的迴圈引用與OC的對比Swift
- php遍歷資料夾以及子目錄;PHP
- Python中使用 for 迴圈來拿遍歷 List 的值Python
- 非迴圈單連結串列的建立、遍歷、排序等排序
- vue中使用Checkbox 多選框迴圈遍歷Vue
- Flutter個人小知識點記錄Flutter
- python知識點記錄_01Python
- python知識點記錄_03Python
- 高質量的C程式碼.關於迴圈遍歷薦C程式
- Windows bat指令碼之for迴圈用法WindowsBAT指令碼
- 一步步學MongoDB之使用迴圈來遍歷遊標MongoDB
- while迴圈以及do while迴圈While
- Swift中實現Array陣列和NSArray陣列的相互轉換與遍歷Swift陣列