通过查看Collection>Array学习相关属性知识
-
capacity 当前数组最大承载能力
数组初始化后,会默认分配一块大于或等于array.count数的使用,如果当前capacity>= count, 增加新数据时,则不去开辟新内存存储数据,直到所有空间将要用完
WeChat001e43b6f1da1fb5b2b9291c311b9a38.png
-
replaceSubrange 替换数组
根据range替换数组中数据,range长度随意
WeChate3288dcb7d11b75c8933a61d9961b6cb.png
-
popLast 删除最后一个元素
与removeLast()的区别为:remove不支持空数组删除,poplast支持;
popFirst也就清楚怎么用了😁 -
dropLast 从数组末尾开始删除,并返回删除后的新数组
var numbers = [10, 20, 30, 40]
numbers.append(contentsOf:stride(from: 50, through: 100, by: 10))
print("\t\t剩余数组为:\(numbers.dropLast(5))") //剩余数组为:[10, 20, 30, 40, 50]
-
suffix 与droplast功能相反
如输入的k值大于数组长度,返回数组本身
var numbers = [10, 20, 30, 40]
numbers.append(contentsOf:stride(from: 50, through: 100, by: 10))
print("\t\t剩余数组为:\(numbers.suffix(5))") //剩余数组为:[60, 70, 80, 90, 100]
print("\t\t剩余数组为:\(numbers.suffix(15))") //剩余数组为:[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
-
map 数组映射为另外一个数组
let numbers = [10, 20, 30, 40]
numbers.map { $0/10 }
print("\t\t剩余数组为:\(numbers.map { $0/10 })") //剩余数组为:[1, 2, 3, 4]
print("\t\t剩余数组为:\(numbers.map{String($0)})") //剩余数组为:["10", "20", "30", "40"]
-
drop 根据闭包条件删除数据,如闭包中返回false,则马上停止。
let numbers = [10, 20, 30, 40]
print("\t\t剩余数组为:\(numbers.drop(while: { $0 >= 20 }))") //剩余数组为:[10, 20, 30, 40]。由于$0=10时,不满足>=20,跳出closure,返回数组本身
print("\t\t剩余数组为:\(numbers.drop(while: { $0 < 20 }))") //剩余数组为:[20, 30, 40]. 小于20的数据被删除
-
prefix(maxLength)、prefix(upTo:)返回数组前缀
测试使用时候,两方法返回对象一致,目前发现的差别是:maxlength>array.count时,返回本身; upTo>array.count时,编译报错
let numbers = [10, 20, 30, 40]
print("\t\t剩余数组为:\(numbers.prefix(8))") //剩余数组为:[10, 20, 30, 40]
print("\t\t剩余数组为:\(numbers.prefix(upTo: 8))") //Fatal error: Array index is out of range
-
split字符串拆分为数组
let line = "BLANCHE: I don't want realism. I want magic!"
print(line.split(whereSeparator: { $0 == " " })) //["BLANCHE:", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]
print(line.split(maxSplits: 2, whereSeparator: { $0 == " " }))//["BLANCHE:", "I", "don\'t want realism. I want magic!"]
print(line.split(omittingEmptySubsequences: false, whereSeparator: { $0 == " " }))//["BLANCHE:", "", "", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]
数组拆分为字符串也可以使用此方法,但是有一点需要注意,Array与ArraySlice需要进行转化,当为ArraySlice时,通过subscript方式访问会失败,如a为ArraySlice,a[0],时将得到:Fatal error: Index out of bounds
网友评论