生活随笔
收集整理的這篇文章主要介紹了
Swift基础——数组Array
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Swift基礎——數組Array
數組:使用有序列表存儲同一類型的多個值,相同值可出現在一個數組的不同位置。
數組簡介
首先,和String一樣我們也來看看他的一些Api方法
常規操作方法
reverse、reversed:數組反轉
reverse()在原數組操作,reversed()返回新的數組不會操作破壞原數組
swapAt:指定索引位置交換
記住startIndex這些索引是從“1”開始數的哦
數組添加合并
數組元素替換
數組增刪
當然刪除等這些運用加以其他操作就會變得很神奇,我們嘗試使用閉包語句來感受一下:
排序我們都知道默認升序,我們可以使用閉包使其降序排序:
到這里,尾部加ed大概應該能看出來是什么意思了吧,既然氛圍鋪墊到這里了,那就再演示一個排序例子吧:
下面看看這些簡單一維數組用到的代碼示例吧
import Foundation
import Darwin
var arrString
= Array<String>()
var arrFloat
= Array<Float>()
var arrFloat2
= [Float]()
var arrString2
= [String]()
var arrInt
= [0 , 1 , 2 , 3 , 4 ]
arrInt
.count
arrInt
.isEmpty
arrInt
.contains(3)
arrInt
.first
arrInt
.last
arrInt
.max();
arrInt
.min();
arrInt
.reverse()
arrInt
.reversed()
arrInt
.swapAt(0, 1)
arrInt
.swapAt(arrInt
.startIndex
, arrInt
.endIndex
- 1)
arrInt
.shuffled()
arrInt
.shuffle()
arrInt
+= [5]
arrInt
.append(6)
arrInt
[2...4] = [7]
arrInt
arrInt
[0] = 1arrInt
arrInt
.insert(10, at
: 1)
arrInt
.dropFirst()
arrInt
.popLast()
arrInt
arrInt
.remove(at
: 1)
arrInt
.removeAll()var strArr
= ["張鑫樂" , "張三" , "張員外" , "嫦娥" , "樂寶"]
strArr
.removeAll
{$0.hasPrefix("張")}
strArrarrInt
= [1 , 9 , 2 , 8 , 3 , 7 , 4 , 6 , 5]
arrInt
.sort()
arrInt
let arrInt1
= arrInt
.sorted(by
: {$0 > $1})
arrInt
arrInt1
var str
= ["1" , "22" , "333" , "4444" , "55555"]
str
str
.sort(by
: {left , right inreturn left.count
> right.count
})
str
二維數組創建及數組遍歷
二維數組創建
嗯。。。。發現了吧本質就是一維數組里面還有一個一維數組
數組遍歷
完了嗎?當然沒有,再看看其他幾種遍歷方式吧:
看出來Swift的包容性了吧,繼續看看其他的吧:
遍歷索引和值
forEach遍歷
數組遍歷基本就結束了,我們來關心一些其他的小問題,嗯。。。比如如何比較兩個數組差異:
difference:獲得差異
來瞅瞅這里用到的這些代碼示例吧:
import Foundation
var arr1
= [1 , 2 , 3]
var arr2
= [1 , 2 , 3]
var arr
= [arr1
, arr2
]
var arrInt
= Array<Array<Int>>()
arrInt
.append(arr1
)
arrInt
.append(arr2
)
arrInt
for row
in arrInt
{for column
in row
{}
}
for i
in 0..<arr1
.count
{print(arr1
[i
])
}
for item
in arr1
{print(item
)
}
var strArr
= ["張鑫樂" , "張三" , "李四" , "張大仙"]
for item
in strArr
where item
.hasPrefix("張"){print(item
)
}
for (index
, value
) in strArr
.enumerated(){print("\(index) : \(value)")
}
strArr
.forEach
{item
inprint(item
)
}
var strArrCopy
= ["張鑫樂" , "張三" , "李四" , "張大腳"]
let dif
= strArr
.difference(from
: strArrCopy
)
print(dif
)
數組常用操作
字符串與數組的轉換
split:把字符串轉換為數組
joined:數組合并成字符串
zip:可以將兩個序列中的元素一一對應的方式重新組合成一個序列
可是如果元素個數對應不上怎么辦?直接看結果:
數組過濾
filter、allSatisfy、where、partition等
partition:定位排序,類似于快排中的定位數字
min、max:獲取序列中的最小值、最大值
氛圍到這了都,感受一下字典吧,后續會詳細介紹
prefix:數組截取
drop:顧名思義丟棄
數組降維
諾,顧名思義啦,就是把多位數組通過一些方法轉換為維度更低的數組
flatMap:獲取每個數組元素并放在一個一維數組里
最后看看這個部分用到的代碼示例吧:
import Foundationlet str1
= "I have 8 girls"
let arr1
= str1
.split
{$0 == " "}
arr1
let arr2
= str1
.split(separator
: " ")
arr2
let arr3
= str1
.split
{$0.isNumber
};
arr3
let str2
= arr2
.joined(separator
: " ")
arr1
let arr4
= [1 , 2 , 3 , 4 , 5]
let zip1
= zip(arr4
, arr1
)
for (num
, words
) in zip1
{print("\(num) : \(words)")
}
var arr5
= ["張鑫樂","張曉澤","陳小理","白一曉","張三豐","佐佐木"]
let arr6
= arr5
.filter
{$0.hasPrefix("張")}
arr6
var arr7
= [1 , 2 , 3 , 4]
var arr8
= [1 , 2 , 6 , 7]
let isBig
= arr7
.allSatisfy({$0 < 5})
let isSmall
= arr8
.allSatisfy({$0 < 5})
isBig
isSmall
let num1
= arr7
.first(where: {$0 > 2})
num1
let num2
= arr8
.last(where: {$0 < 6})
num2
let index1
= arr7
.firstIndex(of
: 2)
index1
let index2
= arr7
.lastIndex(of
: 3)
index2
var arr9
= [1 , 2 , 3 , 8 , 9 , 7 , 6 , 5 , 4]
let sort
= arr9
.partition
{$0 > 5}
arr9
var arr10
= [1 , 2 , 3 , -8 , -9 , 7 , 6 , 5 , 4]
let minNum
= arr10
.min();
let maxNum
= arr10
.max();
let absNum
= arr10
.max
{abs($0) < abs($1)}
absNum
let arr11
= ["張鑫樂" : 520 , "張三豐" : 250 , "張天愛" : 110]
let maxArr
= arr11
.max
{$0.value
< $1.value
}
maxArrarr10
let num3
= arr10
.prefix{$0 < 5}
num3
arr10
let num4
= arr10
.prefix(upTo
: 5)
let num5
= arr10
.prefix(4)
let num6
= arr10
.prefix(through
: 5)arr10
let num7
= arr10
.drop
{$0 < 7}
num7
let num8
= arr10
.dropFirst(3)arr7
= [1 , 2 , 3 , 4]
arr8
= [5 , 6 , 7 , 8]
var arr12
= [arr7
, arr8
]
var arr13
= arr12
.flatMap
{$0}
arr13
var arr14
= [5 , 6 , nil , nil]
var arr15
= [arr7
, arr14
]
arr15
var arr16
= arr15
.flatMap
{$0}.compactMap
{$0}
arr16
私貨彩蛋:我從不后悔對任何人好,哪怕是我看錯的人,哪怕我被辜負。因為,我對你好,不是因為你有多好,只是因為我很好 —— 慧海大師
總結
以上是生活随笔為你收集整理的Swift基础——数组Array的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。