TypeScript Array(陣列)
陣列物件是使用單獨的變數名來儲存一系列的值。
陣列非常常用。
假如你有一組資料(例如:網站名字),存在單獨變數如下所示:
如果有 10 個、100 個這種方式就變的很不實用,這時我們可以使用陣列來解決:
這樣看起來就簡潔多了。
TypeScript 宣告陣列的語法格式如下所示:
var array_name[:datatype]; //宣告 array_name = [val1,val2,valn..] //初始化
或者直接在宣告時初始化:
var array_name[:data type] = [val1,val2…valn]
如果陣列宣告時未設定型別,則會被認為是 any 型別,在初始化時根據第一個元素的型別來推斷陣列的型別。
例項
建立一個 number 型別的陣列:
var numlist:number[] = [2,4,6,8]
整個陣列結構如下所示:
索引值第一個為 0,我們可以根據索引值來訪問陣列元素:
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
Google itread01
以下例項我們在宣告時直接初始化:
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
1 2 3 4
Array 物件
我們也可以使用 Array 物件建立陣列。
Array 物件的建構函式接受以下兩種值:
- 表示陣列大小的數值。
- 初始化的陣列列表,元素使用逗號分隔值。
例項
指定陣列初始化大小:
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
0 2 4 6
以下例項我們直接初始化陣列元素:
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
Google itread01 Taobao Facebook
陣列解構
我們也可以把陣列元素賦值給變數,如下所示:
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
12 13
陣列迭代
我們可以使用 for 語句來迴圈輸出陣列的各個元素:
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
1001 1002 1003 1004
多維陣列
一個數組的元素可以是另外一個數組,這樣就構成了多維陣列(Multi-dimensional Array)。
最簡單的多維陣列是二維陣列,定義方式如下:
var arr_name:datatype[][]=[ [val1,val2,val3],[v1,v2,v3] ]
例項
定義一個二維陣列,每一個維度的陣列有三個元素。
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
1 2 3 23 24 25
陣列在函式中的使用
作為引數傳遞給函式
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
Google itread01 Taobao Facebook
作為函式的返回值
TypeScript
編譯以上程式碼,得到以下 JavaScript 程式碼:
JavaScript
輸出結果為:
Google itread01 Taobao Facebook
陣列方法
下表列出了一些常用的陣列方法:
序號 | 方法 & 描述 | 例項 |
---|---|---|
1. | concat()
連線兩個或更多的陣列,並返回結果。 |
var alpha = ["a", "b", "c"]; var numeric = [1, 2, 3]; var alphaNumeric = alpha.concat(numeric); console.log("alphaNumeric : " + alphaNumeric ); // a,b,c,1,2,3 |
2. | every()
檢測數值元素的每個元素是否都符合條件。 |
function isBigEnough(element, index, array) { return (element >= 10); } var passed = [12, 5, 8, 130, 44].every(isBigEnough); console.log("Test Value : " + passed ); // false |
3. | filter()
檢測數值元素,並返回符合條件所有元素的陣列。 |
function isBigEnough(element, index, array) { return (element >= 10); } var passed = [12, 5, 8, 130, 44].filter(isBigEnough); console.log("Test Value : " + passed ); // 12,130,44 |
4. | forEach()
陣列每個元素都執行一次回撥函式。 |
let num = [7, 8, 9]; num.forEach(function (value) { console.log(value); }); 編譯成 JavaScript 程式碼: var num = [7, 8, 9]; num.forEach(function (value) { console.log(value); // 7 8 9 }); |
5. | indexOf()
搜尋陣列中的元素,並返回它所在的位置。 如果搜尋不到,返回值 -1,代表沒有此項。 |
var index = [12, 5, 8, 130, 44].indexOf(8); console.log("index is : " + index ); // 2 |
6. | join()
把陣列的所有元素放入一個字串。 |
var arr = new Array("Google","itread01","Taobao"); var str = arr.join(); console.log("str : " + str ); // Google,itread01,Taobao var str = arr.join(", "); console.log("str : " + str ); // Google, itread01, Taobao var str = arr.join(" + "); console.log("str : " + str ); // Google + itread01 + Taobao |
7. | lastIndexOf()
返回一個指定的字串值最後出現的位置,在一個字串中的指定位置從後向前搜尋。 |
var index = [12, 5, 8, 130, 44].lastIndexOf(8); console.log("index is : " + index ); // 2 |
8. | map()
通過指定函式處理陣列的每個元素,並返回處理後的陣列。 |
var numbers = [1, 4, 9]; var roots = numbers.map(Math.sqrt); console.log("roots is : " + roots ); // 1,2,3 |
9. | pop()
刪除陣列的最後一個元素並返回刪除的元素。 |
var numbers = [1, 4, 9]; var element = numbers.pop(); console.log("element is : " + element ); // 9 var element = numbers.pop(); console.log("element is : " + element ); // 4 |
10. | push()
向陣列的末尾新增一個或更多元素,並返回新的長度。 |
var numbers = new Array(1, 4, 9); var length = numbers.push(10); console.log("new numbers is : " + numbers ); // 1,4,9,10 length = numbers.push(20); console.log("new numbers is : " + numbers ); // 1,4,9,10,20 |
11. | reduce()
將陣列元素計算為一個值(從左到右)。 |
var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; }); console.log("total is : " + total ); // 6 |
12. | reduceRight()
將陣列元素計算為一個值(從右到左)。 |
var total = [0, 1, 2, 3].reduceRight(function(a, b){ return a + b; }); console.log("total is : " + total ); // 6 |
13. | reverse()
反轉陣列的元素順序。 |
var arr = [0, 1, 2, 3].reverse(); console.log("Reversed array is : " + arr ); // 3,2,1,0 |
14. | shift()
刪除並返回陣列的第一個元素。 |
var arr = [10, 1, 2, 3].shift(); console.log("Shifted value is : " + arr ); // 10 |
15. | slice()
選取陣列的的一部分,並返回一個新陣列。 |
var arr = ["orange", "mango", "banana", "sugar", "tea"]; console.log("arr.slice( 1, 2) : " + arr.slice( 1, 2) ); // mango console.log("arr.slice( 1, 3) : " + arr.slice( 1, 3) ); // mango,banana |
16. | some()
檢測陣列元素中是否有元素符合指定條件。 |
function isBigEnough(element, index, array) { return (element >= 10); } var retval = [2, 5, 8, 1, 4].some(isBigEnough); console.log("Returned value is : " + retval ); // false var retval = [12, 5, 8, 1, 4].some(isBigEnough); console.log("Returned value is : " + retval ); // true |
17. | sort()
對陣列的元素進行排序。 |
var arr = new Array("orange", "mango", "banana", "sugar"); var sorted = arr.sort(); console.log("Returned string is : " + sorted ); // banana,mango,orange,sugar |
18. | splice()
從陣列中新增或刪除元素。 |
var arr = ["orange", "mango", "banana", "sugar", "tea"]; var removed = arr.splice(2, 0, "water"); console.log("After adding 1: " + arr ); // orange,mango,water,banana,sugar,tea console.log("removed is: " + removed); removed = arr.splice(3, 1); console.log("After removing 1: " + arr ); // orange,mango,water,sugar,tea console.log("removed is: " + removed); // banana |
19. | toString()
把陣列轉換為字串,並返回結果。 |
var arr = new Array("orange", "mango", "banana", "sugar"); var str = arr.toString(); console.log("Returned string is : " + str ); // orange,mango,banana,sugar |
20. | unshift()
向陣列的開頭新增一個或更多元素,並返回新的長度。 |
var arr = new Array("orange", "mango", "banana", "sugar"); var length = arr.unshift("water"); console.log("Returned array is : " + arr ); // water,orange,mango,banana,sugar console.log("Length of the array is : " + length ); // 5 |