摘要:所謂數(shù)組英語(yǔ),是有序的元素序列。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。在棧中添加數(shù)據(jù)和刪除數(shù)據(jù)也被稱為推入和彈出,而且推入和彈出只會(huì)發(fā)生在棧的頂部。棧是一種數(shù)據(jù)結(jié)構(gòu),而隊(duì)列則是一種的數(shù)據(jù)結(jié)構(gòu),即先進(jìn)先出。
所謂數(shù)組(英語(yǔ):Array),是有序的元素序列。 若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。 組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。 ---百度百科
簡(jiǎn)單理解,數(shù)組就是數(shù)據(jù)的有序列表。
Array 在 Javascript 中屬于最常用的數(shù)據(jù)類型之一了,與其它語(yǔ)言一樣 Javascript 中的數(shù)組也是數(shù)據(jù)的有序列表,但是與其他語(yǔ)言有所不同的是,它可以用于保存任何數(shù)據(jù)類型,而且數(shù)組的長(zhǎng)度是可以動(dòng)態(tài)調(diào)整的。
var elements = ["first", 2, {age: 14}];創(chuàng)建數(shù)組
既然認(rèn)識(shí)了數(shù)組,那我們先看怎么創(chuàng)建一個(gè)數(shù)組吧!Javascript 提供兩種創(chuàng)建數(shù)組的方法。
1.通過(guò)構(gòu)造函數(shù)創(chuàng)建
var arr1 = new Array(); //[] var arr2 = new Array(3); //[,,] 創(chuàng)建一個(gè)包含三項(xiàng)的數(shù)組 var arr3 = new Array(3, 4) //[3, 4] var arr4 = new Array("3"); //["3"] var arr5 = new Array("2","3"); //["2","3"]
看到上面的結(jié)果簡(jiǎn)直蒙逼,因此可以看出參數(shù)傳遞的不同產(chǎn)生的結(jié)果也會(huì)不一樣,而且結(jié)果令人驚訝,不過(guò)我們可以總結(jié)為:如果傳入一位數(shù)值類型的參數(shù)時(shí),則創(chuàng)建給一個(gè)定項(xiàng)的數(shù)組(例如 arr2 ),如果傳入其他類型的參數(shù)時(shí),則會(huì)創(chuàng)建一個(gè)包含當(dāng)前參數(shù)的數(shù)組(例如 arr4, arr5),
我們這個(gè)方法比較坑,所以一般不會(huì)使用這個(gè)方法去創(chuàng)建數(shù)組,那么我們繼續(xù)看下一個(gè)方法如何創(chuàng)建數(shù)組的。
2.通過(guò)字面量創(chuàng)建
var arr1 = []; var arr2 = [1, 2]; var arr3 = ["1", "3"];
就是這么簡(jiǎn)單,粗暴,明了;是我們創(chuàng)建數(shù)組最常用的方法,而且這種方法創(chuàng)建還非常高效。如何訪問(wèn)和設(shè)置數(shù)組
上面說(shuō)到我們是如何創(chuàng)建一個(gè)數(shù)組,數(shù)組創(chuàng)建出來(lái)之后我們需要對(duì)數(shù)組中的元素進(jìn)行訪問(wèn)或修改吧?下面我們就來(lái)看看吧
訪問(wèn)數(shù)組,通過(guò)索引訪問(wèn)數(shù)組中的元素,索引從 0 開(kāi)始,如果訪問(wèn)的索引大于數(shù)組中元素的個(gè)數(shù)怎么辦呢?結(jié)果肯定是找不到的,所以會(huì)返回 undefined 。
說(shuō)到數(shù)組元素的個(gè)數(shù)我們不能不提到數(shù)組的一個(gè)屬性了,那就是 length 屬性,它會(huì)返回當(dāng)前數(shù)組元素的個(gè)數(shù),
而且 length 屬性不是只讀屬性,它還可以去修改,因此我們利用 length 屬性即可以添加數(shù)組的元素,還可以刪除數(shù)組的元素。
var arr = ["first", "second", "three"]; console.log(arr[0]); //first console.log(arr[1]); //second console.log(arr[3]); //undefined //利用 length 刪除元素 arr.length = 2; console.log(arr); //["first", "second"] //利用 length 添加元素(可以利用此方法在數(shù)組的末尾添加元素) arr[arr.length] = "five"; console.log(arr); //["first", "second", "five"]如何表現(xiàn)的和「?!挂粯?/b>
想要知道數(shù)組怎么表現(xiàn)的和「棧」一樣,首先我們先來(lái)了解一下什么是「棧」。
在這里我們不深究「?!?,如果深究下去一時(shí)半會(huì)我們也說(shuō)不清楚,也不是我們本文的重點(diǎn)。
簡(jiǎn)單來(lái)說(shuō),「?!故且环N數(shù)據(jù)結(jié)構(gòu),一種 LIFO (Last-In-First-Out)的數(shù)據(jù)結(jié)構(gòu),也就是后進(jìn)先出,最新添加進(jìn)來(lái)的元素最早被移出。
在 「?!怪刑砑訑?shù)據(jù)和刪除數(shù)據(jù)也被稱為推入和彈出,而且推入和彈出只會(huì)發(fā)生在「棧」的頂部。
Javascript 提供為數(shù)組提供了兩個(gè)方法以便于我們實(shí)現(xiàn)「?!沟男袨?,下面我們就來(lái)看看吧。
push : 向數(shù)組的末尾添加元素,可以傳入任意數(shù)量的參數(shù)
pop:從數(shù)組的末尾刪除最后一項(xiàng),返回刪除的元素,使數(shù)組的 length-1
var arr = ["A", "B", "C"]; arr.push("D"); console.log(arr); //["A", "B", "C", "D"] var rem = arr.pop(); console.log(arr);//["A", "B", "C"] console.log(rem); // "D"如何表現(xiàn)的和 「隊(duì)列」一樣
上回我們說(shuō)到 Javascript 中的數(shù)組可以有「棧」一樣的行為,那么它也可以表現(xiàn)出和「隊(duì)列」一樣的行為。
「?!故且环N LIFO 數(shù)據(jù)結(jié)構(gòu),而「隊(duì)列」則是一種 FIFO(First In First Out)的數(shù)據(jù)結(jié)構(gòu),即先進(jìn)先出。
數(shù)據(jù)在「隊(duì)列」的末尾添加元素,在前端移出元素,上面說(shuō)到我們可以利用 push 方法在數(shù)組的末尾添加元素,那么什么方法在數(shù)組的前端去移出元素呢?答案就是 shift() 方法。
shift:刪除數(shù)組的第一個(gè)元素,返回刪除的元素,使數(shù)組的 length-1
可以看出它與pop()方法剛好相反
var arr = ["A", "B", "C"]; arr.push("D"); console.log(arr); //["A", "B", "C", "D"] var rem = arr.shift(); console.log(arr);//["B", "C", "D"] console.log(rem); // "A"
我們可以看到上面我們是在末尾添加元素,前端刪除元素,但是我們可以不可以在前端添加元素,在末尾刪除元素呢?也就是說(shuō)我們能不能反向模擬「隊(duì)列」。
Javascript 中為我們提供了一個(gè)方法然后我們配合pop()方法我們就可以實(shí)現(xiàn)反向的模擬。那就是 unshift()。
unshift():在數(shù)組的開(kāi)頭添加任意個(gè)數(shù)的元素
var arr = ["A", "B", "C"]; arr.unshift("D"); console.log(arr); //[ "D", "A", "B", "C"] var rem = arr.pop(); console.log(arr);//["D", "A", "B"] console.log(rem); // "C"總結(jié)
「數(shù)組」在 Javascript 中是最為常見(jiàn)的引用類型的數(shù)據(jù)結(jié)構(gòu),其重要性是不言而喻的,因此「數(shù)組」也擁有比較多的方法,如果一個(gè)篇幅寫下來(lái)會(huì)非常非常的長(zhǎng),這樣不僅不利于閱讀而且也非??简?yàn)讀者對(duì)耐性,細(xì)水長(zhǎng)流,所以我們分兩篇文章去介紹,如果你對(duì)文章感興趣,可以持續(xù)關(guān)注,如果喜歡呢,你也可以轉(zhuǎn)發(fā),點(diǎn)贊,對(duì)作者也是一種支持!
關(guān)注微信公眾號(hào):六小登登。領(lǐng)取全套學(xué)習(xí)資源
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/97518.html
摘要:刪除數(shù)組元素的開(kāi)始索引需要?jiǎng)h除元素的個(gè)數(shù),插入數(shù)組的元素語(yǔ)法因?yàn)閰?shù)變化多樣,我們主要從三個(gè)方面來(lái)展示的用法。 今天是我們介紹數(shù)組系列文章的第五篇,也是我們數(shù)組系列的最后一篇文章,只是數(shù)據(jù)系列的結(jié)束,所以大家不用擔(dān)心,我們會(huì)持續(xù)的更新干貨文章。 生命不息,更新不止! 今天我們就不那么多廢話了,直接干貨開(kāi)始。 我們?cè)凇禞avascript數(shù)組系列一之棧與隊(duì)列》中描述我們是如何利用 pus...
摘要:于是翻出了機(jī)房里的這本學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法開(kāi)始學(xué)習(xí)程序員的基礎(chǔ)知識(shí)。這本書(shū)用了我最熟悉的來(lái)實(shí)現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和算法,而且書(shū)很薄,可以說(shuō)是一本不錯(cuò)的入門教程。隊(duì)列在頭部刪除元素,尾部添加元素。 本系列所有文章:第一篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列第二篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之字典和散列表第五篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算...
摘要:我們?cè)跀?shù)組系列一之棧與隊(duì)列中介紹了一些數(shù)組的用法。該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí)的值。今天我們就說(shuō)這么多,希望你有所收獲,接下來(lái)還請(qǐng)繼續(xù)關(guān)注,我們繼續(xù)來(lái)說(shuō)數(shù)組的其他一系列的方法。 我們?cè)凇禷vascript數(shù)組系列一之棧與隊(duì)列》中介紹了一些數(shù)組的用法。比如:數(shù)組如何表現(xiàn)的和「?!挂粯?,用什么方法表現(xiàn)的和「隊(duì)列」一樣等等一些方法,因?yàn)?...
摘要:本系列所有文章第一篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列第二篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之字典和散列表第五篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之二叉搜索樹(shù)簡(jiǎn)單介紹鏈表鏈表一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),可 本系列所有文章:第一篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之棧與隊(duì)列第二篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之鏈表第三篇文章:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之集合第四篇文章:學(xué)習(xí)數(shù)...
閱讀 3291·2021-11-10 11:35
閱讀 1494·2019-08-30 13:20
閱讀 1194·2019-08-29 16:18
閱讀 2227·2019-08-26 13:54
閱讀 2238·2019-08-26 13:50
閱讀 1048·2019-08-26 13:39
閱讀 2578·2019-08-26 12:08
閱讀 2029·2019-08-26 10:37