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. 從函式返回陣列

允許函式返回陣列

廣告