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] 这样的声明将创建一个数组,如下所示:

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

可以在单个语句中声明和初始化数组。相同的语法是:

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代码:

//Generated by typescript 1.8.10
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代码:

//Generated by typescript 1.8.10
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对象创建数组。可以传递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代码:

//Generated by typescript 1.8.10
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代码:

//Generated by typescript 1.8.10
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方法

下面给出Array对象的方法及其描述的列表。

序号方法和说明
1concat()

返回由此数组与其他数组或值连接组成的新数组。

2every()

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

3filter()

使用该数组中由提供的过滤函数返回true的的元素来创建一个新数组。

4forEach()

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

5indexof()

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

6join()

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

7lastIndexOf()

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

8map()

使用在此数组中的每个元素上调用提供的函数的结果来创建一个新数组。

9pop()

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

10push()

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

11reduce()

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

12reduceRight()

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

13reverse()

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

14shift()

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

15slice()

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

16some()

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

17sort()

对数组的元素进行排序。

18splice()

添加或从数组中删除元素。

19toString()

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

20unschift()

将一个或多个元素添加到数组的前面,并返回数组的新长度。

数组解构

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

示例

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

在编译时,它会生成以下JavaScript代码:

//Generated by typescript 1.8.10
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代码。

//Generated by typescript 1.8.10
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从函数返回数组
允许函数返回数组。

多维数组操作 

您只需要 [] 来实例化一个数组 - 无论其类型如何,这都是正确的。数组是数组类型的事实并不重要。

同样的事情也适用于循环的第一级。它只是一个数组,而 [] 是一个新的空数组 - 工作完成。

至于第二级,如果 Thing 是一个类,那么 new Thing() 就可以了。否则,根据类型,您可能需要一个工厂函数或其他表达式来创建一个。

 class Something {
    private things: Thing[][];

    constructor() {
        this.things = [];

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = [];
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();
            }
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值