使用變量來存儲值會帶來以下限制:
變量本質(zhì)上是標(biāo)量。換言之,一個變量聲明變量聲明一次只能包含一個。這意味著在程序中存儲n個值需要n個變量聲明。因此,當(dāng)需要存儲更大的值集合時,使用變量是不可行的。
程序中的變量以隨機(jī)順序分配存儲器,從而使得難以按其聲明的順序檢索/讀取值。
TypeScript引入了數(shù)值的概念來解決這個問題。數(shù)組是值的同類集合。為了簡化,數(shù)組是相同數(shù)據(jù)類型的值的集合。它是一個用戶定義的類型。
以下是一個數(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ù)組元素的值可以被更新或修改,但不能被刪除。
使用以下語法在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ù)組指針默認(rèn)引用第一個元素。
可以在單個語句中聲明和初始化數(shù)組。相同的語法是:
var array_name[:data type] = [val1,val2…valn]
注 - 一對“[ ]”被稱為數(shù)組的維數(shù)。
下標(biāo)后面的數(shù)組名稱用來引用數(shù)組元素。它的語法如下:
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對象創(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
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對象的方法及其描述的列表。
序號 | 方法和說明 |
---|---|
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í)體的結(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
可以使用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支持?jǐn)?shù)組中的以下概念:
序號 | 概念和說明 |
---|---|
1 | 多維數(shù)組 TypeScript支持多維數(shù)組。多維數(shù)組的最簡單的形式是二維數(shù)組。 |
2 | 將數(shù)組傳遞給函數(shù) 您可以通過指定不帶索引的數(shù)組名稱來向函數(shù)傳遞指向數(shù)組的指針。 |
3 | 從函數(shù)返回數(shù)組 允許函數(shù)返回數(shù)組。 |
更多建議: