摘要:創建數組的基本方式有兩種。為數組專門提供了和方法,以便實現類似棧的行為。反轉數組,按升序排列數組項即最小的值位于最前面。例如,會刪除數組中的前兩項。對數組中的每一項運行給定函數,返回該函數會返回的項組成的數組。
===什么是數組===
數組是數據的有序列表。
創建數組的基本方式有兩種。
第一種是使用 Array 構造函數:var colors = new Array();
創建數組的第二種基本方式是使用數組字面量表示法:var colors = ["red", "blue", "green"];
===檢測數組的方法===
1》通過instanceof來判斷:value instanceof Array;
2》通過Array.isArray()方法來判斷;
===數組的方法===
一共總結數組常見的 22 種方法!
其中 7 種會改變原數組值:push()、pop()、shift()、unshift()、reverse()、sort()、splice()
15 種不會改變原數組的值:toString()、toLocaleSting()、valueOf()、join()、concat()、slice()、indexOf()、lastIndexOf()、every()、filter()、forEach()、map()、some()、reduce()、reduceRight()
1.轉換方法(toString、toLocaleSting、valueOf()、join)(不會修改原數組!)
所有對象都會有toString、toLocaleSting、valueOf()方法。
toString、toLocaleSting方法會將數組轉換成以逗號(,)分割的字符串。
join()接收一個參數,將數組轉換為字符串,并以這個參數作分割。
2.棧方法 (修改原數組!)
棧是一種 LIFO(Last-In-First-Out,后進先出)的數據結構,也就是最新添加的項最早被移除。而棧中項的插入(叫做推入)和移除(叫做彈出),只發生在一個位置——(棧的頂部)。ECMAScript 為數組專門提供了 push()和 pop()方法,以便實現類似棧的行為。
因為是棧后進先出,而且推入/彈出都是發生在棧的頂部。因此數組的尾部實際是存放在棧的頂部,所以push()(后增方法)添加在數組尾部,就是添加在棧的頂部。pop方法刪除數組尾部一位數據也就是在棧頂部刪除最新數據,滿足后入先出去。
3.隊列方法(修改原數組!)
隊列數據結構的訪問規則是 FIFO(First-In-First-Out, 先進先出)。隊列在列表的末端添加項,從列表的前端移除項。
結合使用 shift()和 push()方法,可以像使用隊列一樣使用數組。
因為隊列是先進先出,所以數組的尾部就對應著隊列末端,所以通過push方法在數組尾部添加數據就是在隊列末端添加。在使用shift方法在數組頂部移除一位數據就是在隊列前端移除。
ECMAScript 還為數組提供了一個 unshift()方法。顧名思義,unshift()與 shift()的用途相反: 它能在數組前端添加任意個項并返回新數組的長度。因此,同時使用 unshift()和 pop()方法,可以從相反的方向來模擬隊列,即在數組的前端添加項,從數組末端移除項。
4.重新排序方法 (修改原數組!)
數組中已經存在兩個可以直接用來重排序的方法:reverse()和 sort()。
reverse反轉數組,sort按升序排列數組項——即最小的值位于最前面。sort()方法會調用每個數組項的 toString()轉型方法,然后比較得到的字符串(javascript字符串在進行大于(小于)比較時,會根據第一個不同的字符的ascii值碼進行比較,當數字(number)與字符串(string)進行比較大小時,會強制的將數字(number)轉換成字符串(string)然后再進行比較),以確定如何排序。
sort()方法可以接收一個比較函數作為參數,以便我們指定哪個值位于哪個值的前面。比較函數接收兩個參數,如果第一個參數應該位于第二個之前則返回一個負數,如果兩個參數相等 則返回 0,如果第一個參數應該位于第二個之后則返回一個正數。
5.操作方法
concat (不修改原數組!):先創建當前數組一個副本,然后將接收到的參數 添加到這個副本的末尾,最后返回新構建的數組。在沒有給 concat()方法傳遞參數的情況下,它只是 復制當前數組并返回副本。如果傳遞給 concat()方法的是一或多個數組,則該方法會將這些數組中的每一項都添加到結果數組中。
slice() (不修改原數組!): 基于當前數組中的一或多個項創建一個新數組。slice()方法可以 接受一或兩個參數,即要返回項的起始和結束位置。在只有一個參數的情況下,slice()方法返回從該參數指定位置開始到當前數組末尾的所有項。如果有兩個參數,該方法返回起始和結束位置之間的項,但不包括結束位置的項。
起始值大于結束值:返回【】;
負數則加上數組長度來確定坐標slice(-2,-1) === slice(1,2);
splice (修改原數組!): 有很多種用法:
刪除:可以刪除任意數量的項,只需指定 2 個參數:要刪除的第一項的位置和要刪除的項數。 例如,splice(0,2)會刪除數組中的前兩項。
插入:可以向指定位置插入任意數量的項,只需提供 3 個參數:起始位置、要刪除的項數(0)和要插入的項。如果要插入多個項,可以再傳入第四、第五,以至任意多個項。例如, splice(2,0,"red","green")會從當前數組的位置 2 開始插入字符串"red"和"green"。
替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定 3 個參數:起始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等。例如, splice (2,1,"red","green")會刪除當前數組位置2的項,然后再從位置2開始插入字符串"red"和"green"
6.位置方法 (不修改原數組!)
indexOf()和 lastIndexOf()。這兩個方法都接收兩個參數:要查找的項和(可選的)起點位置的索引。其中,indexOf()方法從數組的開頭(位置0)開始向后查找,lastIndexOf()方法則從數組的末尾開始向前查找。內部使用===進行比較。
7.迭代方法 (不修改原數組!)
ECMAScript5為數組定義了5個迭代方法。每個方法都接收兩個參數:要運行的函數、運行該函數的作用域對象(可選的)(影響 this 的值)。
傳入這些方法中的函數會接收三個參數:數組項的值、該項在數組中的位置和數組對象本身。根據使用的方法不同,這個函數執行后的返回值可能會也可能不會影響方法的返回值。
every():對數組中的每一項運行給定函數,如果該函數對每一項都返回 true,則返回 true。 filter():對數組中的每一項運行給定函數,返回該函數會返回 true 的項組成的數組。
forEach():對數組中的每一項運行給定函數。這個方法沒有返回值。
map():對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
some():對數組中的每一項運行給定函數,如果該函數對任一項返回 true,則返回 true。
8.歸并方法(不修改原數組!)
reduce()和 reduceRight()。這兩個方法都會迭代數組的所有項,然后構建一個最終返回的值。其中,reduce()方法從數組的第一項開始,逐個遍歷到最后。而reduceRight()相反。
接收兩個參數:要調用的函數、作為歸并基礎的初始值(可選)
函數接收4個參數:前一個值、當前值、項的索引和數組對象。這個函數返回的任何值都會作為第一個參數自動傳給下一項。第一次迭代發生在數組的第二項上,因此第 一個參數是數組的第一項,第二個參數就是數組的第二項。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105323.html
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:棧被稱為一種后入先出的數據結構。散列使用的數據結構叫做散列表。這些操作需要求助于其他數據結構,比如下面介紹的二叉查找樹。 前言 在過去的幾年中,得益于Node.js的興起,JavaScript越來越廣泛地用于服務器端編程。鑒于JavaScript語言已經走出了瀏覽器,程序員發現他們需要更多傳統語言(比如C++和Java)提供的工具。這些工具包括傳統的數據結構(如鏈表,棧,隊列,圖等),...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
閱讀 727·2021-11-24 10:30
閱讀 1262·2021-09-24 09:48
閱讀 3079·2021-09-24 09:47
閱讀 3598·2019-08-29 17:11
閱讀 2880·2019-08-29 15:38
閱讀 2277·2019-08-29 11:03
閱讀 3601·2019-08-26 12:15
閱讀 1015·2019-08-26 10:45