Array数组
数组是用来存储相同类型数值的序列化列表。
let studentName : [NSString] = ["xiaoMing","xiaoHong"]
var studentHeight : Array<CGFloat> = [172.5,168]
studentHeight[1] = 168.5
print(studentName)
print(studentHeight)
运行结果:
[xiaoMing, xiaoHong]
[172.5, 168.5]
快捷定义:
var shoppingList = []
通过初始化构造器定义数组:
var arr1 = [Int]()//定义可变的空数组
arr1.append(10)//往里添加数组
//通过初始化器生成用0填充,元素个数为10的数组。
var arr2 = Array(repeating:0, count:10)
swift中的数组还可以存储不同类型的值。
let xiaoMing = [2021,172.5,"男","计算机科学与技术"] as [Any]
var xiaoHong = [2021,168.5,"女","汉语言文学"] as [Any]
xiaoHong[3] = "会计"
print(xiaoMing)
print(xiaoHong)
运行结果:
[2021, 172.5, "男", "计算机科学与技术"]
[2021, 168.5, "女", "会计"]
数组相关的一些方法及处理:
插入元素、修改元素、添加元素
let xiaoMing = [2021,172.5,"男","计算机科学与技术","xiaoMing"] as [Any]
var xiaoHong = [2021,168.5,"女","汉语言文学"] as [Any]
//在0的位置 插入元素
xiaoHong.insert(2021, at: 0)
//修改位置为3的元素
xiaoHong[3] = "会计"
//末尾添加元素
xiaoHong += ["xiaoHong"]
print("xiaoMing同学的数据个数:\(xiaoMing.count)")
let students = xiaoHong+xiaoMing
print("转学生资料:\(students)")
运行结果:
xiaoMing同学的数据个数:5
转学生资料:[2021, 2021, 168.5, "会计", "汉语言文学", "xiaoHong", 2021, 172.5, "男", "计算机科学与技术", "xiaoMing"]
除一些常见的方式以外,还有通过区间运算符进行修改元素。
var array = ["xiaoMing",172.5,"xiaoHong",168.5]
array.replaceSubrange((0...1),with:["xiaoHua",155.0])
数组的排序
var array = ["A","B","C","D","E"]
array.sort(by:{
(s1,s2) -> Bool in
if(s1>s2){
return true
}else{
return false
}
})
print(array)
//输出结果:["E","D","C","B","A"]
/*sort接受的是一个block闭包,
sort是任意两个变量s1与s2相比较,
该block返回的结果true或false表示是否进行换位排序。*/
数组的过滤
var array = ["A","B","C","D","E"]
array = array.filter({
(item) -> Bool in
if(item=="D"){
//如果是D就丢弃
return false
}else{
return true
}
})
print(array)
//输出结果:["A","B","C","E"]
数组的一些奇奇怪怪的用法
可以直接遍历数组指定位置的元素
let mysteriousNumbers = [0,1,1,2,3,5,8,13,21,34,55,89]
for content in mysteriousNumbers[3 ... 10]{
print("content:\(content)")
}
PS:需要注意的是,对于for后声明的变量,因为in后面跟的是一个数组而不是一个range范围,所以for后面变量的值是数组中的元素,而不是当前遍历的index。