TypeScript 數(shù)組

2019-01-11 15:55 更新

使用變量來存儲值會帶來以下限制:

  • 變量本質(zhì)上是標(biāo)量。換言之,一個變量聲明變量聲明一次只能包含一個。這意味著在程序中存儲n個值需要n個變量聲明。因此,當(dāng)需要存儲更大的值集合時,使用變量是不可行的。

  • 程序中的變量以隨機(jī)順序分配存儲器,從而使得難以按其聲明的順序檢索/讀取值。

TypeScript引入了數(shù)值的概念來解決這個問題。數(shù)組是值的同類集合。為了簡化,數(shù)組是相同數(shù)據(jù)類型的值的集合。它是一個用戶定義的類型。

數(shù)組的特點(diǎn)

以下是一個數(shù)組的特點(diǎn)列表:

  • 數(shù)組聲明分配順序內(nèi)存塊。

  • 數(shù)組是靜態(tài)的。這意味著,數(shù)組一旦被初始化就不能改變大小。

  • 每個存儲塊表示一個數(shù)組元素。

  • 數(shù)組元素是由稱為元素的下標(biāo)/索引的唯一整數(shù)標(biāo)識。

  • 像變量一樣,數(shù)組也應(yīng)該在使用前聲明。使用var關(guān)鍵字來聲明一個數(shù)組。

  • 數(shù)組初始化是指填充數(shù)組元素。

  • 數(shù)組元素的值可以被更新或修改,但不能被刪除。

聲明和初始化數(shù)組

使用以下語法在Typescript中聲明一個初始化數(shù)組:

語法

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

沒有數(shù)據(jù)類型的數(shù)組聲明被認(rèn)為是any類型。在初始化期間,從數(shù)組的第一個元素的數(shù)據(jù)類型推論出這種數(shù)組的類型。

例如,像 var numlist:number[] = [2,4,6,8] 這樣的聲明將創(chuàng)建一個數(shù)組,如下所示:

聲明并初始化數(shù)組

數(shù)組指針默認(rèn)引用第一個元素。

可以在單個語句中聲明和初始化數(shù)組。相同的語法是:

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

- 一對“[ ]”被稱為數(shù)組的維數(shù)。

訪問數(shù)組元素

下標(biāo)后面的數(shù)組名稱用來引用數(shù)組元素。它的語法如下:

array_name[subscript] = value

示例:簡單數(shù)組

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對象創(chuàng)建數(shù)組??梢詡鬟fArray構(gòu)造函數(shù)。

  • 表示數(shù)組大小的數(shù)值

  • 逗號分隔值列表。

下面的示例說明了如何使用此方法創(chuàng)建數(shù)組。

示例

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構(gòu)造函數(shù)接受逗號分隔值

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對象的方法及其描述的列表。

序號 方法和說明
1 concat()

返回由此數(shù)組與其他數(shù)組或值連接組成的新數(shù)組。

2 every()

如果此數(shù)組中的每個元素都滿足提供的測試函數(shù),則返回true。

3 filter()

使用該數(shù)組中由提供的過濾函數(shù)返回true的元素來創(chuàng)建一個新數(shù)組。

4 forEach()

為數(shù)組中的每個元素調(diào)用一個函數(shù)。

5 indexof()

返回數(shù)組中元素的第一個(最?。┧饕?,該索引等于指定的值,如果沒有找到,則返回-1。

6 join()

將數(shù)組的所有元素連接成一個字符串。

7 lastIndexOf()

返回數(shù)組中元素的最后一個(最大)索引,該索引等于指定值,如果未找到,則返回-1。

8 map()

使用在此數(shù)組中的每個元素上調(diào)用提供的函數(shù)的結(jié)果來創(chuàng)建一個新數(shù)組。

9 pop()

從數(shù)組中刪除最后一個元素并返回該元素。

10 push()

將一個或多個元素添加到數(shù)組的末尾,并返回該數(shù)組的新長度。

11 reduce()

同時對數(shù)組的兩個值(從左到右)應(yīng)用函數(shù),以將其減少為單個值。

12 reduceRight()

同時對數(shù)組的兩個值(從右到左)應(yīng)用函數(shù),以將其減少為單個值。

13 reverse()

反轉(zhuǎn)數(shù)組元素的順序 - 第一個成為最后一個,最后一個成為第一個。

14 shift()

從數(shù)組中刪除第一個元素并返回該元素。

15 slice()

提取數(shù)組的一部分并返回一個新數(shù)組。

16 some()

如果此數(shù)組中至少有一個元素滿足提供的測試函數(shù),則返回true。

17 sort()

對數(shù)組的元素進(jìn)行排序。

18 splice()

添加或從數(shù)組中刪除元素。

19 toString()

返回表示數(shù)組及其元素的字符串。

20 unschift()

將一個或多個元素添加到數(shù)組的前面,并返回數(shù)組的新長度。

數(shù)組解構(gòu)

指分解實(shí)體的結(jié)構(gòu)。當(dāng)在數(shù)組的上下文中使用時,TypeScript支持解構(gòu)。

示例

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

數(shù)組遍歷使用for ... in循環(huán)

可以使用for ... in循環(huán)遍歷數(shù)組。

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

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

循環(huán)執(zhí)行基于索引的數(shù)組遍歷。

在編譯時,它會生成以下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中的數(shù)組

TypeScript支持?jǐn)?shù)組中的以下概念:

序號 概念和說明
1 多維數(shù)組

TypeScript支持多維數(shù)組。多維數(shù)組的最簡單的形式是二維數(shù)組。

2 將數(shù)組傳遞給函數(shù)

您可以通過指定不帶索引的數(shù)組名稱來向函數(shù)傳遞指向數(shù)組的指針。

3 從函數(shù)返回數(shù)組
允許函數(shù)返回數(shù)組。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號