TypeScript - 数组



使用变量存储值存在以下限制:

  • 变量本质上是标量的。换句话说,一个变量声明一次只能包含一个值。这意味着要在一个程序中存储 n 个值,需要 n 个变量声明。因此,当需要存储大量值时,使用变量是不可行的。

  • 程序中的变量以随机顺序分配内存,从而难以按声明顺序检索/读取值。

TypeScript 引入了数组的概念来解决这个问题。数组是值的同质集合。简单来说,数组是相同数据类型的值的集合。它是一种用户定义的类型。

数组的特性

以下是数组特性的列表:

  • 数组声明分配顺序内存块。

  • 数组是静态的。这意味着一旦初始化,数组就不能调整大小。

  • 每个内存块代表一个数组元素。

  • 数组元素由一个唯一的整数标识,称为元素的下标/索引。

  • 与变量一样,数组也应该在使用前声明。使用 var 关键字声明数组。

  • 数组初始化是指填充数组元素。

  • 数组元素值可以更新或修改,但不能删除。

声明和初始化数组

要在 TypeScript 中声明和初始化数组,请使用以下语法:

语法

var array_name[:datatype];        //declaration 
array_name = [val1,val2,valn..]   //initialization

没有数据类型的数组声明被认为是 any 类型。此类数组的类型在初始化期间从数组第一个元素的数据类型推断。

例如,像这样的声明 - var numlist:number[] = [2,4,6,8] 将创建如下所示的数组:

Declaring and Initializing Arrays

数组指针默认指向第一个元素。

数组可以在一条语句中声明和初始化。其语法如下:

var array_name[:data type] = [val1,val2…valn]

注意 - [] 对称为数组的维度。

访问数组元素

数组名称后跟下标用于引用数组元素。其语法如下:

array_name[subscript] = value

示例:简单数组

var alphas:string[]; 
alphas = ["1","2","3","4"] 
console.log(alphas[0]); 
console.log(alphas[1]);

编译后,它将生成以下 JavaScript 代码:

var alphas;
alphas = ["1", "2", "3", "4"];
console.log(alphas[0]);
console.log(alphas[1]);

以上代码的输出如下:

1 
2 

示例:单语句声明和初始化

var nums:number[] = [1,2,3,3] 
console.log(nums[0]); 
console.log(nums[1]); 
console.log(nums[2]); 
console.log(nums[3]);

编译后,它将生成以下 JavaScript 代码:

var nums = [1, 2, 3, 3];
console.log(nums[0]);
console.log(nums[1]);
console.log(nums[2]);
console.log(nums[3]);

其输出如下:

1 
2 
3 
3 

数组对象

也可以使用 Array 对象创建数组。可以传递 Array 构造器。

  • 表示数组大小的数值或

  • 逗号分隔的值列表。

以下示例显示如何使用此方法创建数组。

示例

var arr_names:number[] = new Array(4)  

for(var i = 0;i<arr_names.length;i++) { 
   arr_names[i] = i * 2 
   console.log(arr_names[i]) 
}

编译后,它将生成以下 JavaScript 代码。

var arr_names = new Array(4);

for (var i = 0; i < arr_names.length; i++) {
   arr_names[i] = i * 2;
   console.log(arr_names[i]);
}

其输出如下:

0 
2 
4 
6 

示例:Array 构造器接受逗号分隔的值

var names:string[] = new Array("Mary","Tom","Jack","Jill") 

for(var i = 0;i<names.length;i++) { 
   console.log(names[i]) 
}

编译后,它将生成以下 JavaScript 代码:

var names = new Array("Mary", "Tom", "Jack", "Jill");
for (var i = 0; i < names.length; i++) {
   console.log(names[i]);
}

其输出如下:

Mary 
Tom 
Jack 
Jill

数组方法

以下是 Array 对象方法及其说明的列表。

序号 方法和描述
1. concat()

返回一个新数组,该数组包含此数组与其他数组和/或值连接的结果。

2. every()

如果此数组中的每个元素都满足提供的测试函数,则返回 true。

3. filter()

创建一个新数组,其中包含此数组中所有使提供的筛选函数返回 true 的元素。

4. forEach()

为数组中的每个元素调用一个函数。

5. indexOf()

返回数组中等于指定值的第一个(最小)索引,如果没有找到则返回 -1。

6. join()

将数组的所有元素连接成一个字符串。

7. lastIndexOf()

返回数组中等于指定值的最后一个(最大)索引,如果没有找到则返回 -1。

8. map()

创建一个新数组,其中包含对该数组中每个元素调用提供的函数的结果。

9. pop()

删除数组中的最后一个元素并返回该元素。

10. push()

向数组的末尾添加一个或多个元素,并返回数组的新长度。

11. reduce()

同时对数组的两个值(从左到右)应用函数,以将其简化为单个值。

12. reduceRight()

同时对数组的两个值(从右到左)应用函数,以将其简化为单个值。

13. reverse()

反转数组元素的顺序——第一个元素成为最后一个,最后一个元素成为第一个。

14. shift()

删除数组中的第一个元素并返回该元素。

15. slice()

提取数组的一部分并返回一个新数组。

16. some()

如果此数组中至少有一个元素满足提供的测试函数,则返回 true。

17. sort()

对数组的元素进行排序。

18. splice()

向数组添加和/或删除元素。

19. toString()

返回表示数组及其元素的字符串。

20. unshift()

向数组的开头添加一个或多个元素,并返回数组的新长度。

数组解构

指分解实体的结构。TypeScript 在数组上下文中使用时支持解构。

示例

var arr:number[] = [12,13] 
var[x,y] = arr 
console.log(x) 
console.log(y)

编译后,它将生成以下 JavaScript 代码。

var arr = [12, 13];
var x = arr[0], y = arr[1];
console.log(x);
console.log(y);

其输出如下:

12 
13

使用 for…in 循环遍历数组

可以使用 **for…in** 循环遍历数组。

var j:any; 
var nums:number[] = [1001,1002,1003,1004] 

for(j in nums) { 
   console.log(nums[j]) 
} 

循环执行基于索引的数组遍历。

编译后,它将生成以下 JavaScript 代码。

var j;
var nums = [1001, 1002, 1003, 1004];

for (j in nums) {
   console.log(nums[j]);
}

以上代码的输出如下:

1001 
1002 
1003 
1004

TypeScript 中的数组

TypeScript 在数组中支持以下概念:

序号 概念和描述
1. 多维数组

TypeScript 支持多维数组。多维数组最简单的形式是二维数组。

2. 将数组传递给函数

您可以通过指定数组的名称而不指定索引来将数组的指针传递给函数。

3. 从函数返回数组

允许函数返回数组

广告