TypeScript Array(數(shù)組)
數(shù)組對象是使用單獨的變量名來存儲一系列的值。
數(shù)組非常常用。
假如你有一組數(shù)據(jù)(例如:網(wǎng)站名字)自沧,存在單獨變量如下所示:
var site1="Google"; var site2="Runoob"; var site3="Taobao";
如果有 10 個纵柿、100 個這種方式就變的很不實用,這時我們可以使用數(shù)組來解決:
var sites:string[]; sites = ["Google","Runoob","Taobao"]
這樣看起來就簡潔多了鸯绿。
TypeScript 聲明數(shù)組的語法格式如下所示:
var array_name[:datatype]; //聲明
array_name = [val1,val2,valn..] //初始化
或者直接在聲明時初始化:
var sites:string[];
sites = ["Google","Runoob","Taobao"]
如果數(shù)組聲明時未設置類型跋破,則會被認為是 any 類型,在初始化時根據(jù)第一個元素的類型來推斷數(shù)組的類型瓶蝴。
實例
創(chuàng)建一個 number 類型的數(shù)組:
var numlist:number[] = [2,4,6,8]
整個數(shù)組結構如下所示:
索引值第一個為 0毒返,我們可以根據(jù)索引值來訪問數(shù)組元素:
TypeScript
var sites:string[]; sites = ["Google","Runoob","Taobao"] console.log(sites[0]); console.log(sites[1]);
編譯以上代碼,得到以下 JavaScript 代碼:
JavaScript
var sites; sites = ["Google", "Runoob", "Taobao"]; console.log(sites[0]); console.log(sites[1]);
輸出結果為:
Google
Runoob
以下實例我們在聲明時直接初始化:
TypeScript
var nums:number[] = [1,2,3,4] console.log(nums[0]); console.log(nums[1]); console.log(nums[2]); console.log(nums[3]);
編譯以上代碼舷手,得到以下 JavaScript 代碼:
JavaScript
var nums = [1, 2, 3, 4]; console.log(nums[0]); console.log(nums[1]); console.log(nums[2]); console.log(nums[3]);
輸出結果為:
1
2
3
4
Array 對象
我們也可以使用 Array 對象創(chuàng)建數(shù)組拧簸。
Array 對象的構造函數(shù)接受以下兩種值:
- 表示數(shù)組大小的數(shù)值。
- 初始化的數(shù)組列表男窟,元素使用逗號分隔值盆赤。
實例
指定數(shù)組初始化大小:
TypeScript
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 代碼:
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
以下實例我們直接初始化數(shù)組元素:
TypeScript
var sites:string[] = new Array("Google","Runoob","Taobao","Facebook") for(var i = 0;i<sites.length;i++) { console.log(sites[i]) }
編譯以上代碼牺六,得到以下 JavaScript 代碼:
JavaScript
var sites = new Array("Google", "Runoob", "Taobao", "Facebook"); for (var i = 0; i < sites.length; i++) { console.log(sites[i]); }
輸出結果為:
Google
Runoob
Taobao
Facebook
數(shù)組解構
我們也可以把數(shù)組元素賦值給變量,如下所示:
TypeScript
var arr:number[] = [12,13] var[x,y] = arr // 將數(shù)組的兩個元素賦值給變量 x 和 y console.log(x) console.log(y)
編譯以上代碼汗捡,得到以下 JavaScript 代碼:
JavaScript
var arr = [12, 13]; var x = arr[0], y = arr[1]; // 將數(shù)組的兩個元素賦值給變量 x 和 y console.log(x); console.log(y);
輸出結果為:
12
13
數(shù)組迭代
我們可以使用 for 語句來循環(huán)輸出數(shù)組的各個元素:
TypeScript
var j:any; var nums:number[] = [1001,1002,1003,1004] for(j in nums) { console.log(nums[j]) }
編譯以上代碼淑际,得到以下 JavaScript 代碼:
JavaScript
var j; var nums = [1001, 1002, 1003, 1004]; for (j in nums) { console.log(nums[j]); }
輸出結果為:
1001 1002 1003 1004
多維數(shù)組
一個數(shù)組的元素可以是另外一個數(shù)組,這樣就構成了多維數(shù)組(Multi-dimensional Array)。
最簡單的多維數(shù)組是二維數(shù)組庸追,定義方式如下:
var arr_name:datatype[][]=[ [val1,val2,val3],[v1,v2,v3] ]
實例
定義一個二維數(shù)組霍骄,每一個維度的數(shù)組有三個元素。
TypeScript
var multi:number[][] = [[1,2,3],[23,24,25]] console.log(multi[0][0]) console.log(multi[0][1]) console.log(multi[0][2]) console.log(multi[1][0]) console.log(multi[1][1]) console.log(multi[1][2])
編譯以上代碼淡溯,得到以下 JavaScript 代碼:
JavaScript
var multi = [[1, 2, 3], [23, 24, 25]]; console.log(multi[0][0]); console.log(multi[0][1]); console.log(multi[0][2]); console.log(multi[1][0]); console.log(multi[1][1]); console.log(multi[1][2]);
輸出結果為:
1
2
3
23
24
25
數(shù)組在函數(shù)中的使用
作為參數(shù)傳遞給函數(shù)
TypeScript
var sites:string[] = new Array("Google","Runoob","Taobao","Facebook") function disp(arr_sites:string[]) { for(var i = 0;i<arr_sites.length;i++) { console.log(arr_sites[i]) } } disp(sites);
編譯以上代碼读整,得到以下 JavaScript 代碼:
JavaScript
var sites = new Array("Google", "Runoob", "Taobao", "Facebook"); function disp(arr_sites) { for (var i = 0; i < arr_sites.length; i++) { console.log(arr_sites[i]); } } disp(sites);
輸出結果為:
Google
Runoob
Taobao
Facebook
作為函數(shù)的返回值
TypeScript
function disp():string[] { return new Array("Google", "Runoob", "Taobao", "Facebook"); } var sites:string[] = disp() for(var i in sites) { console.log(sites[i]) }
編譯以上代碼,得到以下 JavaScript 代碼:
JavaScript
function disp() { return new Array("Google", "Runoob", "Taobao", "Facebook"); } var sites = disp(); for (var i in sites) { console.log(sites[i]); }
輸出結果為:
Google
Runoob
Taobao
Facebook
數(shù)組方法
下表列出了一些常用的數(shù)組方法:
- concat()
連接兩個或更多的數(shù)組咱娶,并返回結果米间。
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
- every()
檢測數(shù)值元素的每個元素是否都符合條件。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
console.log("Test Value : " + passed ); // false
- filter()
檢測數(shù)值元素膘侮,并返回符合條件所有元素的數(shù)組屈糊。
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
- forEach()
數(shù)組每個元素都執(zhí)行一次回調函數(shù)。
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
});
- indexOf()
搜索數(shù)組中的元素琼了,并返回它所在的位置逻锐。
如果搜索不到,返回值 -1雕薪,代表沒有此項昧诱。
var index = [12, 5, 8, 130, 44].indexOf(8);
console.log("index is : " + index ); // 2
- join()
把數(shù)組的所有元素放入一個字符串。
var arr = new Array("Google","Runoob","Taobao");
var str = arr.join();
console.log("str : " + str ); // Google,Runoob,Taobao
var str = arr.join(", ");
console.log("str : " + str ); // Google, Runoob, Taobao
var str = arr.join(" + ");
console.log("str : " + str ); // Google + Runoob + Taobao
- lastIndexOf()
返回一個指定的字符串值最后出現(xiàn)的位置所袁,在一個字符串中的指定位置從后向前搜索盏档。
var index = [12, 5, 8, 130, 44].lastIndexOf(8);
console.log("index is : " + index ); // 2
- map()
通過指定函數(shù)處理數(shù)組的每個元素,并返回處理后的數(shù)組燥爷。
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
console.log("roots is : " + roots ); // 1,2,3
- pop()
刪除數(shù)組的最后一個元素并返回刪除的元素蜈亩。
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
- push()
向數(shù)組的末尾添加一個或更多元素,并返回新的長度前翎。
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
- reduce()
將數(shù)組元素計算為一個值(從左到右)稚配。
var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
console.log("total is : " + total ); // 6
- reduceRight()
將數(shù)組元素計算為一個值(從右到左)。
var total = [0, 1, 2, 3].reduceRight(function(a, b){ return a + b; });
console.log("total is : " + total ); // 6
- reverse()
反轉數(shù)組的元素順序鱼填。
var arr = [0, 1, 2, 3].reverse();
console.log("Reversed array is : " + arr ); // 3,2,1,0
- shift()
刪除并返回數(shù)組的第一個元素药有。
var arr = [10, 1, 2, 3].shift();
console.log("Shifted value is : " + arr ); // 10
- slice()
選取數(shù)組的的一部分,并返回一個新數(shù)組苹丸。
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
- some()
檢測數(shù)組元素中是否有元素符合指定條件。
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
- sort()
對數(shù)組的元素進行排序苇经。
var arr = new Array("orange", "mango", "banana", "sugar");
var sorted = arr.sort();
console.log("Returned string is : " + sorted ); // banana,mango,orange,sugar
- splice()
從數(shù)組中添加或刪除元素赘理。
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
- toString()
把數(shù)組轉換為字符串,并返回結果扇单。
var arr = new Array("orange", "mango", "banana", "sugar");
var str = arr.toString();
console.log("Returned string is : " + str ); // orange,mango,banana,sugar
- unshift()
向數(shù)組的開頭添加一個或更多元素商模,并返回新的長度。
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