如何从一个数组中获取或返回前5个元素(附实例)

284 阅读3分钟

数组的数组也叫矩阵,也叫二维数组。 你可以用多种方式创建多维数组。它包含基于维度的多个子数组。

让我们来看看一些多维数组的例子。

如何创建一个空的二维数组

数组可以是固定的或动态的。

让我们首先创建一个空的二维数组。

下面的数组包含一个整数数组。 第一种语法是在右边声明空的类型 在第二种语法中,如果你要分配空括号,你需要声明类型

以下是用空的二维数组声明变量的方法

  • 在右边使用类型
  • 使用空方括号赋值
  • 一个空数组的值的字面语法
  • 使用数组泛型
var matrix = [[Int]]() 
var matrix1: [[Int]] = [] 
var matrix2: [[String]] = [[], [], [],[]]
var matrix3 = Array<Array<Int>>() 

输出:

[]
[]
[[], [], [], []]
[]

如何在Swift中创建固定大小的二维数组

或者你可以声明一个有默认值的固定数组。

下面声明一个默认值为0的3乘3数组:

var matrix3 = Array(repeating: Array(repeating: 0, count: 3), count: 3)
print(matrix3);

输出:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

如何用数据声明和初始化一个二维数组

让我们创建一个二维数组,即矩阵。它包含2行和2列

var matrix2: [[String]] = [[], []]

var rows: [String]=[]
rows.append("one")
rows.append("two")
matrix2[0] = rows

var cols: [String]=[]
cols.append("three")
cols.append("four")
matrix2[1] = cols

print("Matrix: \(matrix2)")
print("rows: \(rows)")
print("cols: \(cols)")

输出:

Matrix: [["one", "two"], ["three", "four"]]
rows: ["one", "two"]
cols: ["three", "four"]

如何在Swift中向二维数组中添加一个元素?

让我们声明一个数组的数组:

var matrix1: [[Int]] = [] 

每个元素都是一个数组。append方法用来追加一个元素这里

// array of arrays
var matrix1: [[Int]] = [] 
// add to the matrix
matrix1.append([1,2])
print(matrix1); //[[1, 2]]
// add to the matrix
matrix1.append([3,4])
print(matrix1); //[[1, 2], [3, 4]]

// create a array
var newarray: [Int]=[]
newarray.append(4);
newarray.append(5);
// add to matrix
matrix1.append(newarray) //[[1, 2], [3, 4], [4, 5]]
print(matrix1);

输出:

[[1, 2]]
[[1, 2], [3, 4]]
[[1, 2], [3, 4], [4, 5]]

swift将二维数组转换为一个数组

有时,我们需要将二维数组转换或平移为一维数组。

数组提供了joined 方法,该方法返回串联的元素序列,并将其传递给一个数组,以获得

var matrix: [[Int]] = [[1,2],[3,4],[5,6]] 
print(matrix);

var oneArray=Array(matrix.joined())
print(oneArray);

输出:

[[1, 2], [3, 4], [5, 6]]
[1, 2, 3, 4, 5, 6]

如何在Swift中访问二维数组中的元素

数组的访问总是使用一个索引,这个索引总是从零开始到数组的长度。

让我们声明一个带有初始化数据的二维数组,如下所示

var matrix: [[Int]] = [[1,2],[3,4],[5,6]] 
print(matrix); // [[1, 2], [3, 4], [5, 6]]

普通数组中的元素可以用array[index]来访问,2D数组可以用两个索引来传递,第二个索引是可选的:

print(matrix[0]);// [1, 2]
print(matrix[1]); //[3, 4]
print(matrix[2]); //[3, 4]
print(matrix[0][0]);//1
print(matrix[0][1]);//2

如果用一个无效的索引访问一个数组,即matrix[3]matrix[0][2] ,就会出现以下错误

Swift/ContiguousArrayBuffer.swift:580。致命的错误。索引超出范围

如何在Swift中找到一个多维数组的大小?

一个多维数组的计数是其中的元素数量。

数组中的count函数只返回一维的计数,而不是所有元素:

var matrix: [[Int]] = [[1,2],[3,4],[5,6]] 
print(matrix); // [[1, 2], [3, 4], [5, 6]]
print("\(matrix.count) ") // 3
print("\(matrix[0].count)") //2

它不能给出一个二维数组的正确大小。

使用flatMap,可以得到下面给出的计数:

print(matrix.flatMap { $0 }.count) // 6

在Swift中对多维数组进行循环操作

使用嵌套for循环遍历一个具有枚举属性的数组,如下所示

for (i,row) in matrix.enumerated() {
  for (j, cell) in row.enumerated() {
      print("matrix[\(i),\(j)] = \(cell)")
      print("------------------")
  }
}

输出:

matrix[0,0] = 1
------------------
matrix[0,1] = 2
------------------
matrix[1,0] = 3
------------------
matrix[1,1] = 4
------------------
matrix[2,0] = 5
------------------
matrix[2,1] = 6
------------------