Array

作者: 大写的空气 | 来源:发表于2020-04-27 17:07 被阅读0次

通过查看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

相关文章

网友评论

      本文标题:Array

      本文链接:https://www.haomeiwen.com/subject/azoywhtx.html