TypeScript Array(數(shù)組)匯總

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ù)組結構如下所示:

image

索引值第一個為 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ù)組有三個元素。

image

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ù)組方法:

  1. 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

  1. 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

  1. 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

  1. 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
});

  1. indexOf()
    搜索數(shù)組中的元素琼了,并返回它所在的位置逻锐。

如果搜索不到,返回值 -1雕薪,代表沒有此項昧诱。

var index = [12, 5, 8, 130, 44].indexOf(8);
console.log("index is : " + index ); // 2

  1. 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

  1. lastIndexOf()
    返回一個指定的字符串值最后出現(xiàn)的位置所袁,在一個字符串中的指定位置從后向前搜索盏档。

var index = [12, 5, 8, 130, 44].lastIndexOf(8);
console.log("index is : " + index ); // 2

  1. map()
    通過指定函數(shù)處理數(shù)組的每個元素,并返回處理后的數(shù)組燥爷。

var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
console.log("roots is : " + roots ); // 1,2,3

  1. 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

  1. 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

  1. reduce()
    將數(shù)組元素計算為一個值(從左到右)稚配。

var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });
console.log("total is : " + total ); // 6

  1. reduceRight()
    將數(shù)組元素計算為一個值(從右到左)。

var total = [0, 1, 2, 3].reduceRight(function(a, b){ return a + b; });
console.log("total is : " + total ); // 6

  1. reverse()
    反轉數(shù)組的元素順序鱼填。

var arr = [0, 1, 2, 3].reverse();
console.log("Reversed array is : " + arr ); // 3,2,1,0

  1. shift()
    刪除并返回數(shù)組的第一個元素药有。

var arr = [10, 1, 2, 3].shift();
console.log("Shifted value is : " + arr ); // 10

  1. 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

  1. 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

  1. sort()
    對數(shù)組的元素進行排序苇经。

var arr = new Array("orange", "mango", "banana", "sugar");
var sorted = arr.sort();
console.log("Returned string is : " + sorted ); // banana,mango,orange,sugar

  1. 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

  1. toString()
    把數(shù)組轉換為字符串,并返回結果扇单。

var arr = new Array("orange", "mango", "banana", "sugar");
var str = arr.toString();
console.log("Returned string is : " + str ); // orange,mango,banana,sugar

  1. 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

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市施流,隨后出現(xiàn)的幾起案子响疚,更是在濱河造成了極大的恐慌,老刑警劉巖瞪醋,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忿晕,死亡現(xiàn)場離奇詭異,居然都是意外死亡银受,警方通過查閱死者的電腦和手機践盼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宾巍,“玉大人咕幻,你說我怎么就攤上這事《ハ迹” “怎么了肄程?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長选浑。 經(jīng)常有香客問我绷耍,道長,這世上最難降的妖魔是什么鲜侥? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任褂始,我火速辦了婚禮,結果婚禮上描函,老公的妹妹穿的比我還像新娘崎苗。我一直安慰自己,他們只是感情好舀寓,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布胆数。 她就那樣靜靜地躺著,像睡著了一般互墓。 火紅的嫁衣襯著肌膚如雪必尼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天篡撵,我揣著相機與錄音判莉,去河邊找鬼。 笑死育谬,一個胖子當著我的面吹牛券盅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膛檀,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼锰镀,長吁一口氣:“原來是場噩夢啊……” “哼娘侍!你這毒婦竟也來了?” 一聲冷哼從身側響起泳炉,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤憾筏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后花鹅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氧腰,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年翠胰,在試婚紗的時候發(fā)現(xiàn)自己被綠了容贝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡之景,死狀恐怖斤富,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锻狗,我是刑警寧澤满力,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站轻纪,受9級特大地震影響油额,放射性物質發(fā)生泄漏。R本人自食惡果不足惜刻帚,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一潦嘶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧崇众,春花似錦掂僵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至眯漩,卻和暖如春芹扭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赦抖。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工舱卡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摹芙。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓灼狰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浮禾。 傳聞我的和親對象是個殘疾皇子交胚,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容