您的位置:

TS二维数组详解

一、数组大小

数组的大小是一个很重要的概念,它决定了数组中能存储多少元素。在C语言中,使用如下方式定义二维数组的大小:

int arr[3][4] = {
  {0, 1, 2, 3} ,   
  {4, 5, 6, 7} ,   
  {8, 9, 10, 11}   
};

其中3表示数组的行数,4表示数组的列数,也就是说数组的总大小为3*4=12。

在TS中,定义一个二维数组也非常简单:

let arr: number[][] = [
    [0, 1, 2, 3],
    [4, 5, 6, 7],
    [8, 9, 10, 11],
];

可以看到,在TS中定义二维数组的方式与C语言类似,只是将数据类型和数组名放在了一起。

二、数组的初始化

对于C语言来说,要初始化一个二维数组可以使用如下方式:

int arr[3][4] = {
  {0, 1, 2, 3} ,   
  {4, 5, 6, 7} ,   
  {8, 9, 10, 11}   
};

其中每一个{}代表一行元素,花括号内的元素用逗号分隔即可。

在TS中同样也可以采用类似的方式来初始化一个二维数组。例如:

let arr: number[][] = [
    [0, 1, 2, 3],
    [4, 5, 6, 7],
    [8, 9, 10, 11],
];

上面的代码中,我们定义了一个3*4的二维数组,并将其初始化为从0到11。需要注意的是,我们在TS中定义数组时,数据类型要和数组名放在一起,并且数组的声明后要加上[]=。

三、数组的访问

在C语言中,要访问一个二维数组中的元素,可以使用如下方式:

int arr[3][4] = {
  {0, 1, 2, 3} ,   
  {4, 5, 6, 7} ,   
  {8, 9, 10, 11}   
};
int val = arr[1][2];
printf("val=%d\n", val);//输出:val=6

这段代码中,我们定义了一个3*4的二维数组,并将它的第2行第3列的元素赋值给了变量val。

在TS中同样也可以采用类似的方式来访问一个二维数组中的元素。

let arr: number[][] = [
    [0, 1, 2, 3],
    [4, 5, 6, 7],
    [8, 9, 10, 11],
];

let val = arr[1][2];
console.log(val); //输出:6

四、数组的遍历

数组遍历是数组操作中最常用的操作之一。在C语言中,常用的方式包括for循环和双重for循环:

int arr[3][4] = {
  {0, 1, 2, 3} ,   
  {4, 5, 6, 7} ,   
  {8, 9, 10, 11}   
};
for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 4; j++) {
    printf("%d ", arr[i][j]);
  }
  printf("\n");
}

在TS中,同样可以使用for循环和双重for循环来遍历二维数组。

let arr: number[][] = [
    [0, 1, 2, 3],
    [4, 5, 6, 7],
    [8, 9, 10, 11],
];

for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
        console.log(arr[i][j]);
    }
}

上面的代码中,我们使用双重for循环来遍历一个二维数组,并将其中的元素输出。

五、数组复制

在C语言中,要复制一个二维数组,可以使用如下方式:

int arrSource[3][4] = {
  {0, 1, 2, 3} ,   
  {4, 5, 6, 7} ,   
  {8, 9, 10, 11}   
};

int arrTarget[3][4];

for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 4; j++) {
    arrTarget[i][j] = arrSource[i][j];
  }
}

在TS中同样可以采用类似的方式来复制一个二维数组。例如:

let arrSource: number[][] = [
    [0, 1, 2, 3],
    [4, 5, 6, 7],
    [8, 9, 10, 11],
];

let arrTarget: number[][] = [];

for (let i = 0; i < arrSource.length; i++) {
    arrTarget.push([]);
    for (let j = 0; j < arrSource[i].length; j++) {
        arrTarget[i][j] = arrSource[i][j];
    }
}

上面的代码中,我们定义了一个二维数组arrSource,并将其复制到了另一个二维数组arrTarget中。

六、多维数组

在C语言中,还可以定义多维数组,例如3维数组:

int arr[2][3][4] = {
  {
    {0, 1, 2, 3},
    {4, 5, 6, 7},
    {8, 9, 10, 11}
  }, 
  {
    {12, 13, 14, 15},
    {16, 17, 18, 19},
    {20, 21, 22, 23}
  }
};

在TS中,我们可以采用类似的方式定义多维数组:

let arr: number[][][] = [
  [
    [0, 1, 2, 3],
    [4, 5, 6, 7],
    [8, 9, 10, 11]
  ], 
  [
    [12, 13, 14, 15],
    [16, 17, 18, 19],
    [20, 21, 22, 23]
  ]
];

上面的代码中,我们定义了一个3维数组arr,并将其初始化为一个3*4的二维数组。

七、总结

在TS中,二维数组的操作和C语言类似,只是语法有所不同。在定义数组大小、初始化、访问、遍历、复制等方面,我们可以采用类似的方式来实现。另外还可以通过多维数组来实现更复杂的数据结构,例如3维数组。