學習數組中常用方法,按以下四個方面考慮:
(1).方法的作用?
(2).需要傳哪些參數
(3).是否有返回值,返回值是什么
(4).通過此方法是否對原來的數組產生改變
1、關于數組的增加、修改、刪除:
push:(1).向數組的末尾增加新的內容
? ? ? ? ? ? (2).參數:想向末尾增加哪些內容就傳遞誰,可以傳遞多個值,統一向末尾增加多項
? ? ? ? ? ? (3).返回:新增加后數組的長度(length)
? ? ? ? ? ? (4).原來的數組已經發生了改變
(還可以直接用ary[ ary.length ]=參數 ? 或者 ? ary.splice(ary.length,0,所加參數))
pop:(1).刪除數組最后一項的內容
? ? ? ? ? (2).參數:沒有
? ? ? ? ? (3).返回:被刪除的那一項的內容
? ? ? ? ? (4).原來的數組發生了改變
(還可以用ary.length-- ?或者 ?ary.splice(ary.length-1))
shift:(1).刪除數組中的第一項
? ? ? ? ? ?(2).參數:沒有
? ? ? ? ? ?(3).返回:被刪除的那一項的內容
? ? ? ? ? ?(4).原來的數組發生了改變
unshift:(1).向數組開頭增加一項
? ? ? ? ? ? ? (2).參數:想向開頭增加哪些內容就傳遞誰,可以傳遞多個值,統一向開頭增加多項
? ? ? ? ? ? ? (3).返回:新增加后數組的長度(length)
? ? ? ? ? ? ? (4).原來的數組已經發生了改變
splice:它既能實現刪除,也能實現增加,還能實現修改
刪除:(1).ary.splice( n,m ) 從索引n開始,刪除m個元素,把刪除的內容以一個新數組的方式返回,原來的數組改變
? ? ? ? ? ? (2).ary.splice(n):從索引n開始,刪除到數組末尾
? ? ? ? ? ?(3).ary.splice(0):把原來的數組中每一項都刪除掉(清空數組每一項),把之前每一項的值以一個新數組返回(相當于把之前數組克隆了一份一樣的),修改了原來的數組
? ? ? ? ? ?(4).ary.splice():數組中一項都沒有刪除,返回的是一個空數組
修改:(5).ary.splice(n,m,x):從索引n開始,刪除m個,用x替換刪除的部分,把刪除的內容以一個新的數組返回,原來的數組改變
增加:(6).ary.splice(n,0,x):從索引n開始,一個都不刪除(返回結果是一個空數組),把x增加到索引n的前面,原來的數組改變
2、關于數組的截取和拼接
slice:實現數組的截取,在原來的數組中截取一部分
? ? ? ? ? ? ?(1).slice(n,m):從索引n開始,找到索引m處(不包含m),將找到的部分以一個新的數組返回,原來的數組不變
? ? ? ? ? ? ?(2).slice(n):從索引n開始一直找到數組的末尾
? ? ? ? ? ? ?(3).slice(0) / slice():把原來的數組克隆一份一樣的新數組返回
concat:把兩個數組拼接到一起,原來的數組不變
? ? ? ? ? ? ? ?(1).ary1.concat.(ary2):把ary2和ary1進行拼接,ary2在后面
? ? ? ? ? ? ? ?(2).ary1.concat():把ary1克隆一份一樣的數組
3、把數組轉換為字符串
toString:把數組轉換為字符串,原來的數組不變
join:按照一個分隔符,把數組中的每一項拼接成一個字符串,原來的數組不變
eval:js中把字符串變為js表達式執行的一個方法 ? ?(eg:把數組中的每一項進行相加求和:eval(ary.join("+")))
4、數組的排序和排列
reverse:把數組倒過來排列,原來的數組改變
sort:給數組進行排序,原來的數組改變
? ? ? ? ?(1).ary.sort():這樣的話只能處理10以內的數字進行排序,因為是按照UNICODE編碼的值進行排序的
? ? ? ? ? ?ary.sort(function (a,b) { return a-b; } ):由小到大排序
? ? ? ? ? ?ary.sort(function (a,b) { return b-a; } ):由大到小排序
sort如果想按照其他標準進行排序,就需要提供比較函數,(sort的參數為函數)該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:
若 a 小于 b,在排序后的數組中 a 應該出現在 b 之前,則返回一個小于 0 的值。
若 a 等于 b,則返回 0。
若 a 大于 b,則返回一個大于 0 的值。
5、只有在標準瀏覽器中兼容的方法,在IE6-8下不兼容的
(1).indexOf / lastIndexOf(字符串中也有這兩個方法,但是字符串的這兩個方法兼容所有的瀏覽器,而數組的這兩個方法是不兼容的):當前內容在數組中第一次/最后一次出現位置的索引,如果數組中沒有這一項,返回的結果是-1,如果有這一項,索引是幾就返回幾,原來的數組不變。(可以驗證當前內容在數組中是否存在)
(2).forEach / map:都是用來遍歷數組中的每一項的
? ? ? ? ? ?forEach(function(item,index){}):數組中有幾項,函數執行幾次。item:當前遍歷數組中這一項的值,index:當前這一項的索引。原來的數組不變
? ? ? ? ? ? map:和forEach語法一樣,但是比forEach多加了一個把原來內容進行替換的部分。原來的數組不變,但返回新數組。