Array 数组
介绍
数组中只能声明一种数据类型,可以通过索引访问
声明
swift
var a = [1,2,3]
var b: Array<Int> = [1, 3, 4]
var c: [Int] = [1, 2, 3]
var d = Array([1, 2, 3])
var e = Array(1...10)
重复内容
swift
var a = Array(repeating: "*", count: 10)
数量
swift
var a = [1, 2, 3, 4]
print(a.count) // 4
是否为空
isEmpty
方法判断是否为空
swift
var a = [1, 2, 3, 4]
print(a.isEmpty) // false
下标访问
swift
var a = [1, 2, 3, 4, 5]
print(a[1]) // 获取第一个
print(a[1...3]) // 获取第 1 道 3 个元素
print(a[...3]) // 从 0 开始访问到 3
print(a[1...]) // 从 1 开始访问到最后
遍历
遍历数组
swift
var a = [1, 2, 3, 4, 5]
for item in a {
print(item)
}
遍历下标和值,数组需要调用 enumerated
方法
swift
var a = [1, 2, 3, 4, 5]
for (index,value) in a.enumerated() {
print(index,value)
}
第一个和最后一个元素
first
和 last
可以获取数组中第一个和最后一个元素
swift
var a = [1, 2, 3, 4, 5]
print(a.first ?? "")
print(a.last ?? "")
随机元素
randomElement
方法可以获取到数组中随机一项
swift
var a = [1, 2, 3, 4, 5]
print(a.randomElement() ?? "")
追加元素
append
方法可以向数组结尾追加元素,contentsOf
参数可以追加多个
使用 let 声明的数组是不能添加元素的
swift
var a = [1, 2, 3, 4, 5]
a.append(6) // 添加一个
a.append(contentsOf: [7, 8, 9]) // 添加一个
a += [10, 11] // 添加一个或者多个
插入元素
insert
方法插入元素,at
参数代表插入的索引,contentsOf
参数可以插入多个元素
swift
var arr = ["1", "2", "3", "4", "5"]
// 插入元素, at 参数是第几位
arr.insert("哈哈哈", at: 2)
// contentsOf 参数可插入多个
arr.insert(contentsOf: ["a","b"], at: 3)
print(arr)
var arr2 = [1, 2, 3]
// 插入序列
arr2.insert(contentsOf: 6...9, at: 0)
print(arr2)
替换元素
replaceSubrange
方法可以替换指定索引或者区间的元素
swift
var arr = ["1", "2", "3", "4", "5"]
// 将指定范围替换
arr.replaceSubrange(0...1, with: ["哈哈哈", "222", "时间当回事"])
print(arr)
追加
指定一个区间,使用 +
可以在前面追加元素
swift
var a = [4, 5]
var b = (1...3) + a
var c = a + (7...10)
var d = a + b
print(b)
print(c)
print(d)
删除元素
下面提供多个删除方法
swift
var a = [1, 2, 3, 4, 5, 6]
a.remove(at: 2) // 删除指定索引的
a.removeLast() // 删除最后一位
a.removeFirst() // 删除第一位
a.removeSubrange(1...2) // 删除指定范围
a.removeAll() // 全部删除
print(a)
查找元素
判断数组中是否包含某个元素,使用 contains
方法
swift
var a = ["苹果", "橙子", "樱桃", "香蕉", "橘子"]
var isHave = a.contains("苹果")
print(isHave) // true
查找指定条件的元素,使用 first
方法,传入一个条件,只会找到第一个满足条件的元素,$0
代表每次循环的元素,该方法类似于 js 的 find() 方法
同理,firstIndex
可以查找到第一个满足条件元素的索引,类似于 js 的 findIndex() 方法
还有 last
和 lastIndex
方法,用于查找最后一个满足条件的元素或索引
swift
var a = ["苹果", "橙子", "樱桃", "香蕉", "橘子"]
var b = [1, 2, 3, 4, 5]
var is1 = a.first(where: {$0 == "香蕉"})
var is2 = b.first(where: {$0 > 3})
// 不使用 $0 的写法
var is3 = b.firstIndex(where: {n in n > 3})
print(is1 ?? "")
print(is2 ?? "")
print(is3 ?? "")
max
和 min
方法可以找到数组中的最大值和最小值
swift
var a = [1, 2, 3, 4, 5]
print(a.max() ?? "")
print(a.min() ?? "")
数组变换
map
方法可以将数组进行转换,类型 js 的 map 方法
swift
var a = ["ZhangSan", "LiSi", "WangWu"]
var a2 = a.map{
$0.uppercased()
}
print(a2) // ["ZHANGSAN", "LISI", "WANGWU"]
或者
swift
var a = ["ZhangSan", "LiSi", "WangWu"]
var a2 = a.map{item in
item.uppercased()
}
print(a2)
数组遍历
for in
方法
swift
var a = ["ZhangSan", "LiSi", "WangWu"]
for item in a {
print(item)
}
获取索引,数组需要调用 enumerated()
方法
swift
var a = ["ZhangSan", "LiSi", "WangWu"]
for (index, item) in a.enumerated() {
print(index, item)
}
forEach
方法
swift
var a = ["ZhangSan", "LiSi", "WangWu"]
a.forEach{
print($0)
}
a.forEach{item in
print(item)
}
filter
方法,产生新的数组,过滤指定条件的数据
swift
var a = [1,2,3,4]
var res = a.filter{
$0 > 2
}
print(res) // [3, 4]
数组排序
sort
方法可以排序数组
swift
var a = [99, 1, 2, 3, 4, 5]
a.sort()
print(a) // [1, 2, 3, 4, 5, 99]
by
参数可控制排序方式,生序或者降序
swift
var a = [99, 1, 2, 3, 4, 5]
var b = [99, 1, 2, 3, 4, 5]
a.sort(by: >)
b.sort(by: <)
print(a) // [99, 5, 4, 3, 2, 1]
print(b) // [1, 2, 3, 4, 5, 99]
洗牌模式
shuffle
方法可以随机打乱数组,洗牌模式
swift
var a = [99, 1, 2, 3, 4, 5]
a.shuffle()
print(a)
将数组转换为字符串
joined
方法可以将数组转换为字符串,separator
参数将定义转换的分隔规则
swift
var a = ["苹果", "香蕉", "橘子"]
print(a.joined()) // 苹果香蕉橘子
var b = ["苹果", "香蕉", "橘子"]
print(b.joined(separator: "-")) // 苹果-香蕉-橘子