swift5.0 數(shù)組Array的常用方法總結(jié)

· 數(shù)組與字符串的互轉(zhuǎn)

數(shù)組轉(zhuǎn)字符串

let testArr = ["1","2","3","4","5","6","7"]
// 方法一:
let resultStr = testArr.joined()
打印resultStr結(jié)果:"1234567"
// 方法二:(如果你想要的結(jié)果字符串依然包含分割符可以使用如下方法分割)
let resultStr = testArr.joined(separator: ",")
打印resultStr結(jié)果:"1,2,3,4,5,6,7"

字符串轉(zhuǎn)數(shù)組

沒有分隔符的字符串分割

let testString = "abcdefghijklmn"
//方法一:
let resultArr = Array(testString)
打印resultArr結(jié)果:["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"]
// 方法二:
let resultArr2 = testString.compactMap { (item) -> String? in
    return "\(item)"
}
打印resultArr2結(jié)果:["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"]

有分隔符的字符串分割

let slipStr:String = "adcddgjfdflldkmldv"
示例以字母"d"為分割符,將字符串分割
方法一:
let slipArray = slipStr.split(separator: "d")
打印結(jié)果:["a", "c", "gjf", "fll", "kml", "v"]
方法二:
slipStr.components(separatedBy: "d")
打印結(jié)果:["a", "c", "", "gjf", "fll", "kml", "v"]

注釋:在使用分隔符來分割字符串時(shí),方法一與方法二的區(qū)別在于,如果存在兩個(gè)相鄰的分隔符,方法二會留存空字符串,方法一則會去掉空字符串。

· 數(shù)組的遍歷方法簡析

var dataArray:[String] = ["晴天","陰天","大雨","多云","大風(fēng)","雨夾雪","小雨"]
方法一:
dataArray.forEach { (item) in
    debugPrint(item)
}
方法二:
for item in dataArray {
    debugPrint(item)
}
方法三:
// 該循環(huán)方式可設(shè)置開閉區(qū)間,設(shè)置時(shí)需注意數(shù)組越界
for i in 0..<dataArray.count {
   debugPrint(dataArray[i])
}
方法四:
//該方法可以循環(huán)輸出元組類型,包含下標(biāo)index及對應(yīng)的item
for (index,item) in dataArray.enumerated() {
    debugPrint(index,item)
}

注釋:我嘗試使用方法一與方法二,分別遍歷輸出0~100000之間的數(shù)字,來比較耗時(shí)長短。方法一耗時(shí)0.1173100471496582,方法二耗時(shí)0.0031960010528564453,因此方法二耗時(shí)較短,故遍歷數(shù)據(jù)較多時(shí)建議使用方法二。

· 獲取數(shù)組中符合條件的某個(gè)對象

var dataArray:[String] = ["晴天","陰天","大雨","多云","大風(fēng)","雨夾雪","小雨"]
//示例是查找末尾字符是“雨”的對象
方法一:
if let text = dataArray.first(where: {$0.hasSuffix("雨")}) {
    debugPrint(text)
}
輸出結(jié)果:"大雨"
//注意:該方法是從數(shù)組的第一個(gè)位置開始查找,當(dāng)有符合條件的對象就輸出,剩下的不會繼續(xù)查找。
方法二:
if let text = dataArray.last(where: {$0.hasSuffix("雨")}) {
    debugPrint(text)
}
輸出結(jié)果:"小雨"
//注意:該方法是從數(shù)組的最后一個(gè)位置開始查找,當(dāng)有符合條件的對象就輸出,剩下的不會繼續(xù)查找。
同理用下面兩個(gè)方法獲取符合條件的對象下標(biāo):
func firstIndex(where predicate: (Element) throws -> Bool) rethrows -> Int?
func lastIndex(where predicate: (Element) throws -> Bool) rethrows -> Int?
方法三:
let con = dataArray.contains(where: {$0 == "小雨"})
debugPrint(con)
輸出結(jié)果:true
//注意:該方法主要是用來判斷數(shù)組中是否包含符合某個(gè)條件的對象,返回值為true或false

注釋:要想獲得所有符合條件的對象,還是循環(huán)遍歷靠譜。

小結(jié)

這些方法是我在寫項(xiàng)目的過程中有用到的,某些方法不常用,用到時(shí)有時(shí)會想不起,故暫做記錄,后續(xù)如果有用到其他的會繼續(xù)更新。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容