
- TypeScript 基礎
- TypeScript - 首頁
- TypeScript - 路線圖
- TypeScript - 概述
- TypeScript - 環境搭建
- TypeScript - 基本語法
- TypeScript vs. JavaScript
- TypeScript - 特性
- TypeScript - 變數
- TypeScript - let & const
- TypeScript - 運算子
- TypeScript 基本型別
- TypeScript - 型別
- TypeScript - 型別註解
- TypeScript - 型別推斷
- TypeScript - 數字
- TypeScript - 字串
- TypeScript - 布林值
- TypeScript - 陣列
- TypeScript - 元組
- TypeScript - 列舉
- TypeScript - any
- TypeScript - never
- TypeScript - 聯合型別
- TypeScript - 字面量型別
- TypeScript - Symbol
- TypeScript - null vs. undefined
- TypeScript - 類型別名
- TypeScript 控制流
- TypeScript - 決策
- TypeScript - if 語句
- TypeScript - if else 語句
- TypeScript - 巢狀 if 語句
- TypeScript - switch 語句
- TypeScript - 迴圈
- TypeScript - for 迴圈
- TypeScript - while 迴圈
- TypeScript - do while 迴圈
- TypeScript 函式
- TypeScript - 函式
- TypeScript - 函式型別
- TypeScript - 可選引數
- TypeScript - 預設引數
- TypeScript - 匿名函式
- TypeScript - 函式構造器
- TypeScript - rest 引數
- TypeScript - 引數解構
- TypeScript - 箭頭函式
- TypeScript 介面
- TypeScript - 介面
- TypeScript - 介面擴充套件
- TypeScript 類和物件
- TypeScript - 類
- TypeScript - 物件
- TypeScript - 訪問修飾符
- TypeScript - 只讀屬性
- TypeScript - 繼承
- TypeScript - 靜態方法和屬性
- TypeScript - 抽象類
- TypeScript - 存取器
- TypeScript - 鴨子型別
- TypeScript 高階型別
- TypeScript - 交叉型別
- TypeScript - 型別守衛
- TypeScript - 型別斷言
- TypeScript 型別操作
- TypeScript - 從型別建立型別
- TypeScript - keyof 型別運算子
- TypeScript - typeof 型別運算子
- TypeScript - 索引訪問型別
- TypeScript - 條件型別
- TypeScript - 對映型別
- TypeScript - 模板字面量型別
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型約束
- TypeScript - 泛型介面
- TypeScript - 泛型類
- TypeScript 其他
- TypeScript - 三斜槓指令
- TypeScript - 名稱空間
- TypeScript - 模組
- TypeScript - 環境宣告
- TypeScript - 裝飾器
- TypeScript - 型別相容性
- TypeScript - Date 物件
- TypeScript - 迭代器和生成器
- TypeScript - Mixin
- TypeScript - 實用型別
- TypeScript - 裝箱和拆箱
- TypeScript - tsconfig.json
- 從 JavaScript 到 TypeScript
- TypeScript 有用資源
- TypeScript - 快速指南
- TypeScript - 有用資源
- TypeScript - 討論
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 程式碼:
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. | 從函式返回陣列
允許函式返回陣列 |