js數組(Array)庫方法的返回值,是否改變原數組等方法的一些總結

    寫的有不對的地方希望大神指教!不想看方法,直接看總結的在最下面。

    如果想看詳細的Array庫數組的方法推薦大家到阮一峯老師的javascript標準參考教程:傳送門

    首先我們知道js中的Array對象中封裝了很多的方法,這些方法用的時候非常的方便,大大縮短了我們的開發時間,但是這些函數就像一母生九子,九子各不同,他們功能不相同但是他們都是一點是我們非常頭疼的,就是這個方法是否改變原數組,還是他返回的是一個新數組,或者它返回的還可能是被刪除的元素。比如splice。這些東西熟能生巧,用的時候如果忘了就去查一下,多用幾次就記住了。但是面試筆試的時候可不會給你查這些東西的機會,所以如果可以就記下來。也沒壞處不是麼。
    我就這些方法做一些筆記,最後再來一個總結吧。
1.Array.isArray()
返回一個布爾值,是否爲數組,彌補了typeof運算符的不足。

var arr = [1,2,3];
typeof arr;//"object"
Array.isArray(arr)//true

2.valueOf() toString()
valueOf()方法是一個所有對象都擁有的方法,表示對該對象求值,不同對象的valueof方法不盡一致,數組的valueOf()返回數組本身。
toString()方法也是所有對象都擁有的方法,數組的toString方法返回數組的字符串形式。


3.push() pop()
push方法這是我們最常用的,用於在數組末端添加一個數據,參數個數無限制
能否改變原數組:能
返回值:添加新元素後數組的長度

pop方法用於刪除數組的最後一個元素,並且返回該元素。
能否改變原數組:能
返回值:返回被刪除的元素


4.shift() unshift()
shift方法用於刪除數組的第一個元素,並返回該元素。
能否改變原數組:能
返回值:返回被刪除的元素

unshift方法用於在數組的第一個位置添加元素,並返回添加新元素後的數組長度。
能否改變原數組:能
返回值:添加新元素後數組的長度


5.join方法
以指定的參數作爲分隔符,將所有數組成員連接爲一個字符串返回,如果不提供參數,默認用逗號分隔。如果數組成員是undefined或null或空位,會被轉化爲空字符串

能否改變原數組:不能
返回值:數組成員以制定符號分割之後的字符串。


6.concat()
concat用於將多個新數組添加到原數組後,組成一個新數組返回,原數組不變。
能否改變原數組:不能
返回值:組成的新數組


7.reverse()
reverse方法用於顛倒排列數組元素,返回改變後的數組。注意,該方法將改變原數組。


8.slice()
slice方法用於提取目標數組的一部分,返回一個新數組,原數組不變。
slice(start,end) 包不包括臨界值如下[start,end)
沒有參數的情況下返回原數組的拷貝
一個參數時,end爲數組.length。
slice方法的重要應用:將類似數組的對象轉化爲真正的數組。
Array.prototype.slice.call(arguments);


9.splice()
splice方法用於刪除原數組的一部分成員,並可以在刪除的位置添加新的數組成員,返回值是被刪除的元素。注意,該方法會改變原數組。
splice(start,count,addElement1,addElement2);
能否改變原數組:能
返回值:返回值是被刪除的元素。


10.sort()
sort方法對數組成員進行排序,默認是按照字典順序排序,排序後,原數組將改變。sort可以按照自定義的方式排序,可以傳入一個函數作爲參數,這個函數擁有兩個參數,如果返回值大於0,表示第一個成員排在第二個成員後面,其他情況下,都是第一個元素排在第二個元素前面。
能否改變原數組:能
返回值:返回值爲排序後的數組。


11.map()
map方法將數組的所有成員一次傳入參數函數,然後把每一次執行的結果組成一個新數組返回。
能否改變原數組:可以改變原數組,也可以不改變
返回值:返回值爲執行過參數函數後組成的新數組。


12.forEach()
forEach方法與map相似,如果想要返回值,用map,如果單純的想讓數組中的沒一個元素都執行某一方法。用forEach函數的參數也是一個函數,這個函數可以有三個參數,第一個是,當前值,當前位置,整個數組。
forEach也可以有第二個參數,綁定參數函數的this值。
forEach無法中斷執行。如果希望中斷用for循環。
forEach會跳過數組的空位置,但是不會跳過undefined和null
能否改變原數組:能不能取決於操作
返回值:返回值爲執行過參數函數後組成的新數組。


13.filter()
filter用於過濾數組成員,滿足條件的成員組成一個新數組返回。它的參數是一個函數(函數的參數爲elem,index,arr—–依次是當前值,當前位置,整個數組),所有數組成員依次執行該函數,返回結果爲true的成員組成一個新數組返回,該方法不會改變原數組。

能否改變原數組:能不能也取決於操作,畢竟參數函數的參數中有整個數組這個參數。
返回值:返回值爲能使參數函數返回true的數組成員。


14.some() every()
這兩個方法類似‘斷言’,返回一個布爾值,表示判斷數組成員是否符合某種條件。
他們接受一個函數作爲參數,所有數組成員,一次執行該函數,該函數接受三個參數:當前成員,當前位置和整個數組,然後返回一個布爾值。
some方法只要一個成員返回值是true,則整個some方法返回值就是true,否則返回false。
那麼every方法就是所有成員都返回true,整個every方法才返回true,否則返回false

能否改變原數組:不能
返回值:true||false


15reduce(),reduceRight()
reduce方法和reduceRight方法依次處理數組的每個成員,最終累計爲一個值。它們的差別是,reduce是從左到右處理(從第一個成員到最後一個成員),reduceRight則是從右到左(從最後一個成員到第一個成員),其他完全一樣。


16.indexOf(),lastIndexOf()
indexOf方法返回給定元素在數組中第一次出現的位置,如果沒有出現則返回-1。
indexOf方法還可以接受第二個參數,表示搜索的開始位置。
lastIndexOf方法返回給定元素在數組中最後一次出現的位置,如果沒有出現則返回-1。

注意:
這兩個方法不能用來搜索NaN的位置,即它們無法確定數組成員是否包含NaN。
但是:es6中的新方法,Array.find()和ArrayfindIndex()都可以找到NaN。

可以改變也可以不改變原數組的方法:
map
forEach
filter

能改變原數組的方法:
push
pop
shift
unshift
reverse
splice
sort

不能改變原數組的方法:
join
concat
slice
some
every
reduce
reduceRight
indexOf
lastIndexOf

返回值爲新數組的方法:
concat
reverse
slice
sort
map
filter

返回值爲其他的:
push:返回爲添加新元素後的數組的長度。
pop::返回被刪除元素。
shift:返回被刪除元素。
unshift:返回爲添加新元素後的數組長度。
join:返回爲由制定字符分隔之後數組成員連接而成的字符串。
splice:返回值是被刪除的元素。
some:true||false
every:true||false
indexOf:index||-1
lastIndexOf:index||-1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章