Swift 数组

数组是相似类型数据的集合。例如,

假设我们需要记录 5 个学生的年龄。与其创建 5 个单独的变量,不如直接创建一个数组

Array of age
数组元素

创建 Swift 数组

以下是在 Swift 中创建数组的方法。

// an array of integer type
var numbers : [Int] = [2, 4, 6, 8]

print("Array: \(numbers)")  

输出

Array: [2, 4, 6, 8]

在上面的示例中,我们创建了一个名为 numbers 的数组。这里,[Int] 指定该数组只能存储整数数据。

Swift 是一种类型推断语言,也就是说,它可以根据其值自动识别数组的数据类型。因此,我们可以在不指定数据类型的情况下创建数组。例如,

var numbers = [2, 4, 6, 8]
print("Array: \(numbers)")   // [2, 4, 6, 8]

创建空数组

在 Swift 中,我们也可以创建空数组。例如,

var value = [Int]()
print(value)

输出

[ ]

在上面的示例中,value 是一个不包含任何元素的空数组。

需要注意的是,在创建空数组时,我们必须在方括号 [] 中指定数据类型,后跟初始化语法 ()。这里,[Int]() 指定空数组只能存储整数数据元素。

注意:在 Swift 中,我们可以创建任何数据类型的数组,如 IntString 等。


访问数组元素

在 Swift 中,数组中的每个元素都与一个数字相关联。这个数字被称为数组索引。

我们可以使用索引号 (0, 1, 2 …) 来访问数组的元素。例如,

var languages = ["Swift", "Java", "C++"]

// access element at index 0
print(languages[0])   // Swift

// access element at index 2
print(languages[2])   // C++

在上面的示例中,我们创建了一个名为 languages 的数组。

How array index works
Swift 中的数组索引

在这里,我们可以看到每个数组元素都与索引号相关联。并且,我们使用了索引号来访问元素。

注意:数组索引总是从 0 开始。因此,数组的第一个元素位于索引 0 处,而不是 1


向数组添加元素

Swift 数组提供了不同的方法向数组添加元素。

1. 使用 append()

append() 方法将元素添加到数组的末尾。例如,

var numbers = [21, 34, 54, 12]

print("Before Append: \(numbers)")

// using append method
numbers.append(32)

print("After Append: \(numbers)")

输出

Before Append: [21, 34, 54, 12]
After Append: [21, 34, 54, 12, 32]

在上面的示例中,我们创建了一个名为 numbers 的数组。请注意这一行:

numbers.append(32)

这里,append()32 添加到数组的末尾。

我们还可以使用 append() 方法将一个数组的所有元素添加到另一个数组。例如,

var primeNumbers = [2, 3, 5]
print("Array1: \(primeNumbers)")

var evenNumbers = [4, 6, 8]
print("Array2: \(evenNumbers)")

// join two arrays
primeNumbers.append(contentsOf: evenNumbers)

print("Array after append: \(primeNumbers)")

输出

Array1: [2, 3, 5]
Array2: [4, 6, 8]
Array after append: [2, 3, 5, 4, 6, 8]

在上面的示例中,我们有两个名为 primeNumbersevenNumbers 的数组。请注意这句话:

primeNumbers.append(contentsOf: evenNumbers)

这里,我们将 evenNumbers 的所有元素添加到 primeNumbers

注意: 如果要将一个数组的所有元素添加到另一个数组,我们必须将 contentOfappend() 一起使用。

2. 使用 insert()

insert() 方法用于将元素添加到数组的指定位置。例如,

var numbers = [21, 34, 54, 12]

print("Before Insert: \(numbers)")

numbers.insert(32, at: 1)

print("After insert: \(numbers)")

输出

Before insert: [21, 34, 54, 12]
After insert: [21, 32, 34, 54, 12]

这里,numbers.insert(32, at:1)32 添加到 索引 1 处。


修改数组元素

我们可以使用数组索引来修改数组元素。例如,

var dailyActivities = ["Eat","Repeat"]
print("Initial Array: \(dailyActivities)")

// change element at index 1
dailyActivities[1] = "Sleep"

print("Updated Array:  \(dailyActivities)")  
 

输出

Initial Array: ["Eat", "Repeat"]
Updated Array:  ["Eat", "Sleep"]

这里,最初 索引 1 的值是 Repeat。然后我们使用以下方法将其更改为 Sleep

dailyActivities[1] = "Sleep"

从数组中删除元素

我们可以使用 remove() 方法从数组中删除最后一个元素。例如,

var languages = ["Swift","Java","Python"]

print("Initial Array: \(languages)")

// remove element at index 1
let removedValue = languages.remove(at: 1)

print("Updated Array: \(languages)")
print("Removed value: \(removedValue)")

输出

Initial Array: ["Swift", "Java", "Python"]
Updated Array: ["Swift", "Python"]
Removed value: Java

同样,我们也可以使用

  • removeFirst() - 删除第一个元素
  • removeLast() - 删除最后一个元素
  • removeAll() - 删除数组的所有元素

其他数组方法

方法 描述
sort() 对数组元素进行排序
shuffle() 改变数组元素的顺序
forEach() 为每个元素调用一个函数
contains() 在数组中搜索元素
swapAt() 交换数组元素的位置
reverse() 反转数组元素的顺序

遍历数组

我们可以使用 for 循环 来迭代数组的元素。例如,

// an array of fruits
let fruits = ["Apple", "Peach", "Mango"]

// for loop to iterate over array
for fruit in fruits {
  print(fruit)
}

输出

Apple
Peach
Mango

查找数组元素的数量

我们可以使用 count 属性来查找数组中元素的数量。例如,

let evenNumbers = [2,4,6,8]
print("Array: \(evenNumbers)")

// find number of elements
print("Total Elements: \(evenNumbers.count)")

输出

Array: [2, 4, 6, 8]
Total Elements: 4

检查数组是否为空

isEmpty 属性用于检查数组是否为空。例如,

// array with elements
let numbers = [21, 33, 59, 17]
print("Numbers: \(numbers)")

// check if numbers is empty
var  result = numbers.isEmpty
print("Is numbers empty? : \(result)")

// array without elements
let evenNumbers = [Int]()
print("Even Numbers: \(evenNumbers)")

// check if evenNumbers is empty
result = evenNumbers.isEmpty
print("Is evenNumbers empty? : \(result)")

输出

Numbers: [21, 33, 59, 17]
Is numbers empty? : false
Even Numbers: []
Is evenNumbers empty? : true

在上面的示例中,我们使用 isEmpty 属性检查 numbersevenNumbers 数组是否为空。这里,isEmpty 返回

  • true - 如果数组为空
  • false - 如果数组不为空

包含混合数据类型的数组

到目前为止,我们一直在使用只包含一种数据类型的数组。

但是,在 Swift 中,我们也可以创建可以包含多种数据类型元素的数组。例如,

// array with String and integer data
var address: [Any] = ["Scranton", 570]
 
print(address)

输出

["Scranton", 570]

在上面的示例中,我们创建了一个名为 address 的数组。

var address: [Any] = ["Scranton", 570]

这里,[Any] 指定 address 可以包含任何数据类型的元素。在本例中,它存储了 StringInteger 数据。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战