- 定义数组:使用语法 [元素类型] 来定义数组,例如:
var arr1 = [1, 2, 3]
var arr2: [String] = ["apple", "banana", "pear"]
- 访问数组元素:可以使用下标(从 0 开始)或者循环遍历数组来访问其中的元素。
let arr = ["apple", "banana", "pear"]
let first = arr[0] // "apple"
print(first)
for item in arr {
print(item)
}
- 操作数组元素:可以使用
append、insert、remove
等方法来操作数组元素。
var arr = [1, 2, 3]
arr.append(4) // [1, 2, 3, 4]
arr.insert(0, at: 0) // [0, 1, 2, 3, 4]
arr.remove(at: 2) // [0, 1, 3, 4]
- 数组切片:可以使用数组的
suffix、prefix、drop
及dropLast
等方法获取其子数组。
let arr = [1, 2, 3, 4, 5]
let subset1 = arr.suffix(3) // [3, 4, 5]
let subset2 = arr.prefix(2) // [1, 2]
let subset3 = arr.dropFirst(2) // [3, 4, 5]
let subset4 = arr.dropLast(1) // [1, 2, 3, 4]
- 数组排序:可以使用
sort、sorted、sort(by:)
等方法对数组进行排序。
var arr = [4, 2, 1, 3, 5]
arr.sort() // [1, 2, 3, 4, 5]
var arr2 = [4, 2, 1, 3, 5]
let sortedArr = arr2.sorted() // [1, 2, 3, 4, 5]
var arr3 = ["apple", "banana", "pear"]
arr3.sort(by: { $0.compare($1) == .orderedAscending })
print(arr3) // ["apple", "banana", "pear"]
- 数组过滤和映射:可以使用
filter、map
等方法对数组进行过滤和映射。
let arr = [1, 2, 3, 4, 5]
let filteredArr = arr.filter { $0 % 2 == 0 } // [2, 4]
let mappedArr = arr.map { $0 * $0 } // [1, 4, 9, 16, 25]
列举几个常用的方法:
- 添加元素到数组:
var array = [1, 2, 3]
array.append(4) // [1, 2, 3, 4]
array += [5] // [1, 2, 3, 4, 5]
- 获取数组元素个数:
let count = array.count // 5
- 数组元素的遍历:
for item in array {
print(item)
}
array.forEach({ item in
print(item)
})
- 获取数组中最大值、最小值、和:
let maxNum = array.max() // 5
let minNum = array.min() // 1
let sum = array.reduce(0, +) // 15
- 数组是否包含某个元素:
let contains = array.contains(2) // true
- 对数组进行排序:
let sortedArray = array.sorted() // [1, 2, 3, 4, 5]
- 筛选数组元素:
let filteredArray = array.filter({ $0 % 2 == 0 }) // [2, 4]
- 数组的删除和替换:
var array = [1, 2, 3, 4, 5]
array.remove(at: 2) // [1, 2, 4, 5]
array[2] = 6 // [1, 2, 6, 5]
- 数组的插入和拼接:
var array = [1, 2, 3, 4, 5]
array.insert(6, at: 2) // [1, 2, 6, 3, 4, 5]
let newArray = array + [7, 8] // [1, 2, 6, 3, 4, 5, 7, 8]
- 数组的截取:
let subArray = array[1...3] // [2, 6, 3]
- 数组的判断输出:
let isEmpty = array.isEmpty // false
print(array) // [1, 2, 6, 3, 4, 5]
- 在数组中查找元素的位置:
if let index = array.firstIndex(of: 2) {
// 找到2,index为1
print("找到2,index为\(index)")
} else {
// 没有找到2
print("没有找到2")
}
- 使用
map
方法对数组中的元素进行转换:
let nums = [1, 2, 3, 4, 5]
let strs = nums.map({ "Number: \($0)" })
print(strs) // ["Number: 1", "Number: 2", "Number: 3", "Number: 4", "Number: 5"]
- 使用
reduce
方法计算数组中所有元素的总和:
let nums = [1, 2, 3, 4, 5]
let sum = nums.reduce(0, { $0 + $1 })
print(sum) // 15
- 使用
filter
方法过滤出数组中的偶数:
let nums = [1, 2, 3, 4, 5]
let evens = nums.filter({ $0 % 2 == 0 })
print(evens) // [2, 4]
- 使用
forEach
方法遍历数组中的每一个元素:
let nums = [1, 2, 3, 4, 5]
nums.forEach({ print($0) })
// 1
// 2
// 3
// 4
// 5
- 移除数组中的重复元素:
var nums = [1, 2, 3, 2, 4, 3, 5]
nums = Array(Set(nums))
print(nums) // [1, 2, 3, 4, 5]
- 在数组中搜索符合条件的元素:
let nums = [1, 2, 3, 4, 5]
let results = nums.enumerated().filter { $0.offset % 2 == 0 && $0.element > 2 }
print(results) // [(2, 3)]
- 使用
compactMap
方法转换数组中的元素,同时过滤掉 nil:
let mixed = ["1", "2", "3", "cat"]
let nums = mixed.compactMap({ Int($0) })
print(nums) // [1, 2, 3]
- 对数组进行降序排序:
let nums = [1, 9, 2, 8, 3, 7, 4, 6, 5]
let sortedNums = nums.sorted { $0 > $1 }
print(sortedNums) // [9, 8, 7, 6, 5, 4, 3, 2, 1]
- 通过
dropFirst()
方法删除数组的前 n 个元素:
let nums = [1, 2, 3, 4, 5]
let tail = nums.dropFirst(2)
print(tail) // [3, 4, 5]
- 通过
dropLast()
方法删除数组的后 n 个元素:
let nums = [1, 2, 3, 4, 5]
let head = nums.dropLast(2)
print(head) // [1, 2, 3]
- 使用
popLast()
方法弹出数组的最后一个元素:
var nums = [1, 2, 3, 4, 5]
let last = nums.popLast()
print(last) // 5
print(nums) // [1, 2, 3, 4]
- 在数组的指定位置插入单个或多个元素:
var nums = [1, 2, 3, 4, 5]
nums.insert(0, at: 0)
print(nums) // [0, 1, 2, 3, 4, 5]
let spliceArray = [6, 7, 8]
nums.splice(contentsOf: spliceArray, at: 3)
// nums 现在为 [0, 1, 2, 6, 7, 8, 3, 4, 5]
- 先通过
firstIndex(of:)
方法找到元素在数组中的位置,然后使用remove(at:)
方法从数组中删除该元素:
var nums = [1, 2, 3, 4, 5]
if let index = nums.firstIndex(of: 3) {
nums.remove(at: index)
print(nums) // [1, 2, 4, 5]
}