今天總結了一下之前所學到的js中數組的方法,分別從參數,返回值,是否改變原數組等方面介紹了數組方法,方法如下:
1.toString()方法: 把數組轉換為數組值(逗號分隔)的字符串。
參數:無;
是否改變原數組:無;
返回值:原數組數組值組成的字符串;
2.push() 方法:(在數組結尾處)向數組添加一個新的元素。
參數:需要添加的數組值
原數組是否改變:改變
返回值:返回新數組長度
3.unshift() 方法:(在開頭)向數組添加新元素。
參數:需要添加的數組值
原數組是否改變:改變
返回值:返回新數組長度
4.pop() 方法:從數組中刪除最后一個元素。
參數:無
原數組是否改變:改變
返回值:被刪除的數組值(最后一個)
5.shift() 方法:會刪除首個數組元素。
參數:無
原數組是否改變:改變
返回值:被刪除的數組值(第一個)
6.splice() 方法:可用于向數組添加新項或刪除元素。
參數:
1.第一個參數定義了應添加新元素的位置(拼接)。
2.第二個參數定義應刪除多少元素。
3.其余參數定義要添加的新元素。
原數組是否改變:改變為添加數組值后的新數組
返回值:被刪除的數組組成的新數組
7.reverse() 方法用于反轉顛倒數組中元素的順序。
參數:無
原數組是否改變:改變為顛倒后的新數組
返回值:跟原數組一樣改變為顛倒后的新數組
8.(1)join()方法: Array.join()方法是String.split()方法的逆向操作,后者是將字符串分割成若干塊來創建一個數組,在默認情況下都會以逗號分隔的字符形式返回數組項。
參數:join()方法只接收一個參數,用作分隔符的字符串,然后返回包含所有數組項的字符串
原數組是否改變:沒有改變
返回值:以字符的形式返回數組項
(2)而join()方法有參數時可以使用不同的分隔符來構建這個字符串:
9.slice() 方法:可從已有的數組中返回選定的元素。
語法:var newArr=arr.slice(start,end);
參數:start 必需規定從何處開始選取。如果是負數,那么它規定從數組尾部開始算起的位置。也就是說,-1 指最后一個元素,-2 指倒數第二個元素,以此類推。
end 可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那么切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那么它規定的是從數組尾部開始算起的元素。
原數組是否改變:沒有改變
返回值:返回一個新的數組,包含從 start 到 end (不包括該元素)的arr中的元素。
注意:該方法并不會修改數組,而是返回一個子數組。如果想刪除數組中的一段元素,應該使用方法 arr.splice()。
注意,如果參數為一個時,返回值為start之后的所有元素值組成的新數組
10.sort() 方法用于對數組的元素進行排序。(如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。)
語法:arr.sort(sortby);
參數:必須是函數,規定排序順序
原數組是否改變:改變為排序后的新數組
返回值:跟原數組一樣改變為排序后的新數組
注意:如果想要實現數值大小排序應改變回調函數sortby的值:
11.concat() 方法:用于連接兩個或多個數組。
語法:arr.concat(arrayX,arrayX,......,arrayX)
參數:要新增的數組
原數組是否改變:不改變
返回值:返回一個新的數組。該數組是通過把所有 arrayX 參數添加到 arrayObject 中生成的。如果要進行 concat() 操作的參數是數組,那么添加的是數組中的元素,而不是數組。
ES5新增數組方法:
12.ES5為數組實例添加了兩個位置方法:indexOf()、lastIndexOf()
(1)indexOf(): 跟字符串查找一樣,查找指定元素是否存在,如果存在,返回下標,如果不存在返回-1
(2)lastIndexOf():跟indexOf()一樣,只是查找起始點不同,indexOf是從第一個開始查找,lastIndexOf()是從最后一個查找,如果存在,返回下標,如果不存在返回-1
13.forEach()方法:迭代(遍歷)數組。
有兩個參數第一個參數是回調函數,第二個參數是控制當前this指向誰
第一個參數(回調函數):function(value, index, arr){};
回調函數內的三個參數分別為:當前循環的值,當前循環的索引,當前數組本身
第二個參數:this
返回值:undefined
是否改變原數組:沒有
回調函數的返回值造成了什么影響:沒有影響
14.map() 方法:遍歷數組。
map()方法返回一個被操作后的新數組,不會改變原數組
map()一般配合return使用,如果沒有return那跟forEach一樣;
參數:回調函數
? ? 返回值:數組,數組內是,每個回調函數的返回值
? ? 是否改變原數組:沒有
? ? 回調函數的返回值造成了什么影響:被放在了map最終返回的數組內
15.filter() 方法:過濾,過濾不符合條件的元素,如果回調函數返回true則保留,返回false則過濾掉。
參數:回調函數
返回值:返回符合條件的值
是否改變原數組:沒有
回調函數的返回值造成了什么影響:被放在了filter最終返回的數組內
16.some()方法:判斷數組內是否有指定元素,如果只要有一個則返回true,如果一個都沒有則返回false,停止遍歷。
參數:回調函數
返回值:存在符合條件返回true,否則返回false;
是否改變原數組:沒有
17.every()方法:判斷數組內是否都有指定元素,如果全部都有則返回true,如果有一個沒有指定元素則返回false,some()和every()相對。
參數:回調函數
返回值:都符合條件返回true,否則返回false;
是否改變原數組:沒有
18.reduce()方法:并歸。
?reduce()回調函數有四個參數,
?第一個參數為:之前計算過的值,
第二參數為:之前計算過的值的下一個值
第三個參數:當前索引
第四個參數為:當前數組對象
類似遞歸,可以求和之類的操作
reduce()和reduceRight()類似,只是執行方向不同,
reduce()從數組的開頭往后遞歸
?reduceRight()從數組的末尾往前遞歸
? ?19.reduceRight()方法:反向并歸。
reduceRight()和reduce()類似,只是執行方向不同,
reduceRight()從數組的末尾往前遞歸
reduce()從數組的開頭往后遞歸。
實例同上。