1. 程式人生 > >Array對象的方法詳情

Array對象的方法詳情

新建 splice 最後一個元素 .so 原來 ray 同時 從零開始 進行

題外話:從事前端開發有很長一段時間了,一直在不斷的擴充各種框架的學習,總覺得要學的東西好多,但是技能並沒有得到很大的提升,後發現自己一味去追求的它的廣度,並沒用去深究其深度,所以決定打算從零開始,從最基礎的開始穩紮穩打的學習。如果有小夥伴跟我一樣覺得進入了瓶頸階段,不妨靜下心來回顧一下基礎的東西,j或許能看到不一樣的景色。

Array

Array對象定義有兩種格式,一種是數組字面量(var arr = []),另一種是調用構造函數生成的數組(var arr = new Array())

我們在平時開發的時候,一般使用的是數組字面量,但至於這倆種定義的方式有什麽區別,卻也沒有去深究。最後在網上查找了一下資料,總結如下:

var arr = []; //數據原型

var arr = new Array(); // 對象,比較耗內存

new關鍵字的使用 ------ 除了在需要實例化一個對象,或罕見的需要延時加載數據的情況外,你基本上不需要使用new關鍵字。在Javascript裏分配大量的new變量地址是一項很慢的操作,為了效率起見,你應該始終使用對象符號。

Array對象的方法的有很多種,有些功能相似,經常被搞混淆,現整理一下所有的方法:

1.toString()/toLocalString() ------- 把數組轉化成字符串

這倆個方法都是將數組轉化成字符串,但還是有區別的,主要體現在時間和超過三位數的數字上,

時間格式:toString轉化為標準格式,toLocaleString會將轉化為本地格式

數值:toLocaleString會將長度超過三位數的數值從右邊開始每三位用逗號間隔開,toString不會

技術分享圖片

2.join() ------- 把數組的所有元素放入一個字符串。元素通過指定的分隔符進行分隔。

技術分享圖片

3.pop() ------- 刪除並返回數組的最後一個元素

pop相當於數據結構中的pop出棧,後進先出。打個比方,a,b,c,d排隊進入只有一個入口的管道,要出來只能依次d,c,b,a出來。

pop() 方法將刪除 array 的最後一個元素,把數組長度減 1,並且返回它刪除的元素的值。如果數組已經為空,則不改變數組,並返回 undefined 值。

註意:這個返回的不是數組,而是刪除的元素

技術分享圖片

4.push(ele1,ele2,....,eleX) ------- 向數組的末尾添加一個或更多元素,並返回新的長度。

push相當於數據結構中的push入棧,因為只有一個入口,所以只能從後面插入。ele為插入的元素,至少插入一個元素,會改變數組的長度

註意:這個返回的不是數組,而是添加數組後的新長度

技術分享圖片

5.shift() ------- 刪除並返回數組的第一個元素

shift 和 pop 就相對於一個組合,shift負責開頭,pop負責末尾。都不會插件新的數組,而是直接修改原有的數組

shift () 方法將刪除 array 的第一個元素,把數組長度減 1,並且返回它刪除的元素的值。如果數組已經為空,則不改變數組,並返回 undefined 值。

技術分享圖片

6.unshift() ------- 向數組的開頭添加一個或更多元素,並返回新的長度。

同樣 unshift 和 push 就相對於一個組合,unshift負責開頭添加,push負責末尾添加。都不會插件新的數組,而是直接修改原有的數組

技術分享圖片

7.slice(start,end) ------- 從某個已有的數組返回選定的元素

start : 必選,規定從何處開始,0表示第一個元素,如果為負數,表示從數組尾部開始算起的位置,-1為最後一個元素,-2為倒數第二個位置;

end : 可選,規定從何處截止,不包含該處的元素,如果沒有設置end值,就表示從起始位置到數組結尾的元素

註意:slice不是改變原有的數組,而是新建一個新的數組

平時開發中我們要獲取數組的最後一個元素,就可以使用 arr.slice(-1) 去獲取。

技術分享圖片

8.split(start,delnum,addele1,addele2,...,addeleX) ------- 插入、刪除或者替換一個數組元素

start : 必需,為添加/刪除項目的起始位置,如果為負數,表示從數組尾部開始算起的位置,-1為最後一個元素,-2為倒數第二個位置;

delnum : 必需,刪除數組元素的個數,如果設置為 0,則不會刪除;

addele : 可選,為需要添加的數組元素

註意:splice改變了原有的數組,同時返回刪除的元素,如何沒有刪除元素,則返回一個空數組

技術分享圖片

9.concat(arr1,arr2,...arrX) ------- 連接兩個或更多的數組,並返回結果

concat不會改變原有數組,而是返回一個新的數組,如果要參數是數組,那麽添加的是數組中的元素,而不是數組

技術分享圖片

10.sort(sortFn) ------- 對數組進行排序操作

sortFn : 可選,對數組排序的函數,如果沒有定義此函數,將按照數組元素的首字符編碼的順序進行排序

sort該方法會改變原來的數組,而不會創建新的數組。

技術分享圖片

排序原理:參數a和b,依次從array數組中取連續的兩個元素。如果 函數返回值 小於 0 ,那麽 a 會被排列到 b 之前;如果 函數返回值 等於 0 , a 和 b 的相對位置不變;如果 函數返回值 大於 0 , b 會被排列到 a 之前。

擴展: 隨機排序 arr.sort( function(){ return Math.random() < 0.5 ? 1 : -1} )

11.reverse() ------- 顛倒數組中元素的順序

reverse該方法會改變原來的數組,而不會創建新的數組。

技術分享圖片

Array對象的方法詳情