成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

javascript數(shù)組常見的22種方法總結(jié)

DesGemini / 436人閱讀

摘要:創(chuàng)建數(shù)組的基本方式有兩種。為數(shù)組專門提供了和方法,以便實(shí)現(xiàn)類似棧的行為。反轉(zhuǎn)數(shù)組,按升序排列數(shù)組項(xiàng)即最小的值位于最前面。例如,會(huì)刪除數(shù)組中的前兩項(xiàng)。對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回的項(xiàng)組成的數(shù)組。

===什么是數(shù)組===

數(shù)組是數(shù)據(jù)的有序列表。
創(chuàng)建數(shù)組的基本方式有兩種。
第一種是使用 Array 構(gòu)造函數(shù):var colors = new Array();
創(chuàng)建數(shù)組的第二種基本方式是使用數(shù)組字面量表示法:var colors = ["red", "blue", "green"];

===檢測(cè)數(shù)組的方法===

1》通過(guò)instanceof來(lái)判斷:value instanceof Array;
2》通過(guò)Array.isArray()方法來(lái)判斷;

===數(shù)組的方法===

一共總結(jié)數(shù)組常見的 22 種方法!
其中 7 種會(huì)改變?cè)瓟?shù)組值:push()、pop()、shift()、unshift()、reverse()、sort()、splice()
15 種不會(huì)改變?cè)瓟?shù)組的值:toString()、toLocaleSting()、valueOf()、join()、concat()、slice()、indexOf()、lastIndexOf()、every()、filter()、forEach()、map()、some()、reduce()、reduceRight()

1.轉(zhuǎn)換方法(toString、toLocaleSting、valueOf()、join)(不會(huì)修改原數(shù)組!)

所有對(duì)象都會(huì)有toString、toLocaleSting、valueOf()方法。
toString、toLocaleSting方法會(huì)將數(shù)組轉(zhuǎn)換成以逗號(hào)(,)分割的字符串。
join()接收一個(gè)參數(shù),將數(shù)組轉(zhuǎn)換為字符串,并以這個(gè)參數(shù)作分割。

2.棧方法 (修改原數(shù)組!)

棧是一種 LIFO(Last-In-First-Out,后進(jìn)先出)的數(shù)據(jù)結(jié)構(gòu),也就是最新添加的項(xiàng)最早被移除。而棧中項(xiàng)的插入(叫做推入)和移除(叫做彈出),只發(fā)生在一個(gè)位置——(棧的頂部)。ECMAScript 為數(shù)組專門提供了 push()和 pop()方法,以便實(shí)現(xiàn)類似棧的行為。
因?yàn)槭菞?strong>后進(jìn)先出,而且推入/彈出都是發(fā)生在棧的頂部。因此數(shù)組的尾部實(shí)際是存放在棧的頂部,所以push()(后增方法)添加在數(shù)組尾部,就是添加在棧的頂部。pop方法刪除數(shù)組尾部一位數(shù)據(jù)也就是在棧頂部刪除最新數(shù)據(jù),滿足后入先出去。

3.隊(duì)列方法(修改原數(shù)組!)

隊(duì)列數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是 FIFO(First-In-First-Out, 先進(jìn)先出)。隊(duì)列在列表的末端添加項(xiàng),從列表的前端移除項(xiàng)。
結(jié)合使用 shift()和 push()方法,可以像使用隊(duì)列一樣使用數(shù)組。

因?yàn)殛?duì)列是先進(jìn)先出,所以數(shù)組的尾部就對(duì)應(yīng)著隊(duì)列末端,所以通過(guò)push方法在數(shù)組尾部添加數(shù)據(jù)就是在隊(duì)列末端添加。在使用shift方法在數(shù)組頂部移除一位數(shù)據(jù)就是在隊(duì)列前端移除。

ECMAScript 還為數(shù)組提供了一個(gè) unshift()方法。顧名思義,unshift()與 shift()的用途相反: 它能在數(shù)組前端添加任意個(gè)項(xiàng)并返回新數(shù)組的長(zhǎng)度。因此,同時(shí)使用 unshift()和 pop()方法,可以從相反的方向來(lái)模擬隊(duì)列,即在數(shù)組的前端添加項(xiàng),從數(shù)組末端移除項(xiàng)。

4.重新排序方法 (修改原數(shù)組!)

數(shù)組中已經(jīng)存在兩個(gè)可以直接用來(lái)重排序的方法:reverse()和 sort()。
reverse反轉(zhuǎn)數(shù)組,sort按升序排列數(shù)組項(xiàng)——即最小的值位于最前面。sort()方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的 toString()轉(zhuǎn)型方法,然后比較得到的字符串(javascript字符串在進(jìn)行大于(小于)比較時(shí),會(huì)根據(jù)第一個(gè)不同的字符的ascii值碼進(jìn)行比較,當(dāng)數(shù)字(number)與字符串(string)進(jìn)行比較大小時(shí),會(huì)強(qiáng)制的將數(shù)字(number)轉(zhuǎn)換成字符串(string)然后再進(jìn)行比較),以確定如何排序。

sort()方法可以接收一個(gè)比較函數(shù)作為參數(shù),以便我們指定哪個(gè)值位于哪個(gè)值的前面。比較函數(shù)接收兩個(gè)參數(shù),如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之前則返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等 則返回 0,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之后則返回一個(gè)正數(shù)。

5.操作方法

concat (不修改原數(shù)組!):先創(chuàng)建當(dāng)前數(shù)組一個(gè)副本,然后將接收到的參數(shù) 添加到這個(gè)副本的末尾,最后返回新構(gòu)建的數(shù)組。在沒(méi)有給 concat()方法傳遞參數(shù)的情況下,它只是 復(fù)制當(dāng)前數(shù)組并返回副本。如果傳遞給 concat()方法的是一或多個(gè)數(shù)組,則該方法會(huì)將這些數(shù)組中的每一項(xiàng)都添加到結(jié)果數(shù)組中。

slice() (不修改原數(shù)組!): 基于當(dāng)前數(shù)組中的一或多個(gè)項(xiàng)創(chuàng)建一個(gè)新數(shù)組。slice()方法可以 接受一或兩個(gè)參數(shù),即要返回項(xiàng)的起始結(jié)束位置。在只有一個(gè)參數(shù)的情況下,slice()方法返回從該參數(shù)指定位置開始到當(dāng)前數(shù)組末尾的所有項(xiàng)。如果有兩個(gè)參數(shù),該方法返回起始結(jié)束位置之間的項(xiàng),但不包括結(jié)束位置的項(xiàng)。

起始值大于結(jié)束值:返回【】;
負(fù)數(shù)則加上數(shù)組長(zhǎng)度來(lái)確定坐標(biāo)slice(-2,-1) === slice(1,2);

splice (修改原數(shù)組!): 有很多種用法:
刪除:可以刪除任意數(shù)量的項(xiàng),只需指定 2 個(gè)參數(shù):要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)。 例如,splice(0,2)會(huì)刪除數(shù)組中的前兩項(xiàng)。

插入:可以向指定位置插入任意數(shù)量的項(xiàng),只需提供 3 個(gè)參數(shù):起始位置、要?jiǎng)h除的項(xiàng)數(shù)(0)要插入的項(xiàng)。如果要插入多個(gè)項(xiàng),可以再傳入第四、第五,以至任意多個(gè)項(xiàng)。例如, splice(2,0,"red","green")會(huì)從當(dāng)前數(shù)組的位置 2 開始插入字符串"red"和"green"。

替換:可以向指定位置插入任意數(shù)量的項(xiàng),且同時(shí)刪除任意數(shù)量的項(xiàng),只需指定 3 個(gè)參數(shù):起始位置要?jiǎng)h除的項(xiàng)數(shù)要插入的任意數(shù)量的項(xiàng)。插入的項(xiàng)數(shù)不必與刪除的項(xiàng)數(shù)相等。例如, splice (2,1,"red","green")會(huì)刪除當(dāng)前數(shù)組位置2的項(xiàng),然后再?gòu)奈恢?開始插入字符串"red"和"green"

6.位置方法 (不修改原數(shù)組!)

indexOf()lastIndexOf()。這兩個(gè)方法都接收兩個(gè)參數(shù):要查找的項(xiàng)和(可選的)起點(diǎn)位置的索引。其中,indexOf()方法從數(shù)組的開頭(位置0)開始向后查找,lastIndexOf()方法則從數(shù)組的末尾開始向前查找。內(nèi)部使用===進(jìn)行比較。

7.迭代方法 (不修改原數(shù)組!)

ECMAScript5為數(shù)組定義了5個(gè)迭代方法。每個(gè)方法都接收兩個(gè)參數(shù):要運(yùn)行的函數(shù)、運(yùn)行該函數(shù)的作用域?qū)ο?/strong>(可選的)(影響 this 的值)。
傳入這些方法中的函數(shù)會(huì)接收三個(gè)參數(shù):數(shù)組項(xiàng)的值、該項(xiàng)在數(shù)組中的位置數(shù)組對(duì)象本身。根據(jù)使用的方法不同,這個(gè)函數(shù)執(zhí)行后的返回值可能會(huì)也可能不會(huì)影響方法的返回值。
every():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)每一項(xiàng)都返回 true,則返回 true。 filter():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回 true 的項(xiàng)組成的數(shù)組。
forEach():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)。這個(gè)方法沒(méi)有返回值。
map():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組。
some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回 true,則返回 true。

8.歸并方法(不修改原數(shù)組!)

reduce()reduceRight()。這兩個(gè)方法都會(huì)迭代數(shù)組的所有項(xiàng),然后構(gòu)建一個(gè)最終返回的值。其中,reduce()方法從數(shù)組的第一項(xiàng)開始,逐個(gè)遍歷到最后。而reduceRight()相反。
接收兩個(gè)參數(shù):要調(diào)用的函數(shù)、作為歸并基礎(chǔ)的初始值(可選)
函數(shù)接收4個(gè)參數(shù):前一個(gè)值、當(dāng)前值、項(xiàng)的索引數(shù)組對(duì)象。這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)。第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上,因此第 一個(gè)參數(shù)是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)就是數(shù)組的第二項(xiàng)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/105323.html

相關(guān)文章

  • 前端面試題總結(jié)(js、html、小程序、React、ES6、Vue、算法、全棧熱門視頻資源)

    摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...

    li21 評(píng)論0 收藏0
  • 前端面試題總結(jié)(js、html、小程序、React、ES6、Vue、算法、全棧熱門視頻資源)

    摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...

    AaronYuan 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)和算法

    摘要:棧被稱為一種后入先出的數(shù)據(jù)結(jié)構(gòu)。散列使用的數(shù)據(jù)結(jié)構(gòu)叫做散列表。這些操作需要求助于其他數(shù)據(jù)結(jié)構(gòu),比如下面介紹的二叉查找樹。 前言 在過(guò)去的幾年中,得益于Node.js的興起,JavaScript越來(lái)越廣泛地用于服務(wù)器端編程。鑒于JavaScript語(yǔ)言已經(jīng)走出了瀏覽器,程序員發(fā)現(xiàn)他們需要更多傳統(tǒng)語(yǔ)言(比如C++和Java)提供的工具。這些工具包括傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)(如鏈表,棧,隊(duì)列,圖等),...

    EastWoodYang 評(píng)論0 收藏0
  • 前端面試題總結(jié)(js、html、小程序、React、ES6、Vue、算法、全棧熱門視頻資源)

    摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快速搭建項(xiàng)目。 本文是關(guān)注微信小程序的開發(fā)和面試問(wèn)題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項(xiàng)目,在瀏覽器端的層面上提升速度,幫助初中級(jí)前端工程師快...

    pumpkin9 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<