Javascript数组常见的方法
分為兩種:原型(實(shí)例)方法和靜態(tài)函數(shù)
第一類:原型方法:
棧方法(后進(jìn)先出)
push
參數(shù):任意個(gè)
作用:將任意數(shù)量的參數(shù)逐個(gè)添加到數(shù)組尾部
返回值: 新數(shù)組的長度
影響:破壞了原數(shù)組
pop
參數(shù):無
作用:刪除數(shù)組最后一項(xiàng)
返回值:刪除的項(xiàng)
影響:破壞了原數(shù)組
隊(duì)列方法(先進(jìn)先出)
unshift
參數(shù):任意個(gè)
作用:將任意個(gè)參數(shù)逐個(gè)添加到數(shù)組前端
返回值:新數(shù)組的長度
影響:破壞了原數(shù)組
shift
參數(shù):無
作用:刪除數(shù)組第一項(xiàng)
返回值:刪除的項(xiàng)
影響:破壞了原數(shù)組
重排序方法
reverse
參數(shù):無
作用:反轉(zhuǎn)數(shù)組
返回值:排序后的數(shù)組
影響:破壞了原數(shù)組
sort
1)不推薦使用默認(rèn)排序方法
2)接受一個(gè)比較函數(shù)作為參數(shù),
3)比較函數(shù)接受兩個(gè)參數(shù),如果第一個(gè)參數(shù)位于第二個(gè)參數(shù)之前則返回一個(gè)負(fù)數(shù),如兩個(gè)參數(shù)相等則返回0,若第一個(gè)參數(shù)位于第二個(gè)參數(shù)之后則返回一個(gè)正數(shù)
4)比較數(shù)值數(shù)組的比較函數(shù)
5)根據(jù)對象數(shù)組里的對象的某個(gè)指定屬性的比較函數(shù)(閉包)
function compare(propertyName) {return function (object1, object2) {return object1[propertyName] - object2[propertyName]} }var arr [{name: '子虛', age: 12}, {name: '烏有', age: 13}] console.log(arr.sort(compare(age)) // {name: '子虛', age: 12}, {name: '烏有', age: 13}]6)返回值:排序后的數(shù)組
7)影響:破壞了原數(shù)組
操作方法
concat
1)先創(chuàng)建當(dāng)前數(shù)組的一個(gè)副本,然后將接收到的參數(shù)添加到這個(gè)副本的尾部,最后返回這個(gè)副本
2)如果參數(shù)是一個(gè)或多個(gè)數(shù)組,這該方法會(huì)將這些數(shù)組中的每一項(xiàng)都添加到結(jié)果數(shù)組中
3)如果參數(shù)不是數(shù)組,這些值會(huì)被簡單的添加到結(jié)果數(shù)組的末尾
4)如果不傳參數(shù),它只是復(fù)制數(shù)組并返回副本(可用于復(fù)制數(shù)組)
5)不會(huì)破壞原數(shù)組
join
1) 將數(shù)組中的所有元素拼接成一個(gè)字符串并返回
2)可以在join傳遞一個(gè)字符串作為參數(shù),該參數(shù)表示連接的方式
3)不會(huì)破壞原數(shù)組
slice
1)從當(dāng)前數(shù)組中取出一個(gè)或多個(gè)指定的連續(xù)的元素創(chuàng)建數(shù)組并返回
2)當(dāng)只有一個(gè)參數(shù)時(shí),該方法從該參數(shù)位置開始到當(dāng)前數(shù)組的所有項(xiàng)
3)當(dāng)有兩個(gè)參數(shù)時(shí),該方法返回起始和結(jié)束位置之間的項(xiàng),但不包括結(jié)束位置的項(xiàng)
4)當(dāng)參數(shù)中有負(fù)數(shù)的時(shí)候,用數(shù)組長度加上該數(shù)來確定相應(yīng)的位置
5)不會(huì)破壞原數(shù)組
splice
1)刪除數(shù)組中的指定的連續(xù)的元素,也可向數(shù)組的中部插入項(xiàng)
2)刪除:提供兩個(gè)參數(shù):刪除第一項(xiàng)的起始位置,刪除的個(gè)數(shù)
3)插入:提供三個(gè)參數(shù):起始位置,0(刪除的項(xiàng)數(shù)),要插入的項(xiàng)
4)編輯:提供三個(gè)參數(shù):起始位置,刪除的項(xiàng)數(shù),要添加的項(xiàng)(刪除的項(xiàng)數(shù)不一定要等于添加的項(xiàng)數(shù))
5)返回從原始數(shù)組刪除的項(xiàng)組成的數(shù)組
6)破壞了原數(shù)組
以下為es6新增
位置方法
indexOf和lastIndexOf:
1)這兩個(gè)方法都接受兩個(gè)參數(shù):要查找的項(xiàng)和(可選的)起始位置,
2)indexOf從數(shù)組開頭向后查找,lastIndexOf從數(shù)組末尾向前查找
3)返回查找的項(xiàng)在數(shù)組中的位置,或者在沒找到的情況下返回-1
4)使用全等操作符 (NaN不等于NaN)
遍歷
forEach
1)對數(shù)組每一項(xiàng)運(yùn)行給定函數(shù)作為參數(shù)
2)該函數(shù)分別接受三個(gè)參數(shù):數(shù)組元素,數(shù)組索引(可選),數(shù)組本身(可選)
3)無返回值
4)缺點(diǎn):無法像for循環(huán)那樣用break語句提前終止遍歷
映射
map
1)對數(shù)組每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組
2)該函數(shù)分別接受三個(gè)參數(shù):數(shù)組元素,數(shù)組索引(可選),數(shù)組本身(可選)
過濾
filter
1)對數(shù)組每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組
2)該函數(shù)分別接受三個(gè)參數(shù):數(shù)組元素,數(shù)組索引(可選),數(shù)組本身(可選)
檢測
every和some
1)它們對數(shù)組元素應(yīng)用指定的函數(shù)進(jìn)行判定,返回true或false
2)every就像數(shù)學(xué)中的“針對所有”的量詞?,當(dāng)前僅當(dāng)數(shù)組中的每一項(xiàng)調(diào)用指定函數(shù)都返回true,它才返回true
3)some就像數(shù)學(xué)中的“存在”的量詞ョ,只要數(shù)組中有一項(xiàng)調(diào)用指定函數(shù)返回true,它就返回true
4)一旦every和some確認(rèn)返回值就會(huì)停止遍歷
5)根據(jù)數(shù)學(xué)上的慣例,空數(shù)組調(diào)用every返回true,some返回false
歸納
reduce和reduceRight
1)使用指定的函數(shù)對數(shù)組元素進(jìn)行組合,生成單個(gè)值,這在函數(shù)式編程中是常見操作,也可成為“注入”和“折疊”
2)reduce第一個(gè)參數(shù)是執(zhí)行簡化操作的化簡函數(shù),化簡函數(shù)的任務(wù)是用某種方法把兩個(gè)值組合或化簡為一個(gè)值,并返回化簡后的值,第二個(gè)參數(shù)(可選)是作為化簡函數(shù)的第一個(gè)參數(shù)的初始值,如果不傳就取數(shù)組的第一項(xiàng)
3)化簡函數(shù)的第一個(gè)參數(shù)是到目前為止的化簡操作累計(jì)的結(jié)果,第2-4個(gè)參數(shù)分別是數(shù)組元素、數(shù)組索引和數(shù)組本身
4)reduceRight類似于reduce,不同的是它是從右往左處理
includes
1)參數(shù):要檢測的元素
2)作用:檢測某個(gè)數(shù)組是否包含給定的元素
3)返回值:布爾值
4)使用不一樣的判斷算法
fill
1)參數(shù):參數(shù)1用來填充數(shù)組的元素,參數(shù)2填充數(shù)組的起始位置(可選),參數(shù)3填充數(shù)組的結(jié)束位置(可選,不包括結(jié)束位置)
2)返回值:新數(shù)組
3)破壞了原數(shù)組
4)如果填充的類型為對象,那么被賦值的是同一個(gè)內(nèi)存地址的對象,而不是深拷貝對象
find和findIndex
1)find方法,用于找出第一個(gè)符合條件的數(shù)組成員。它的參數(shù)是一個(gè)回調(diào)函數(shù)(參數(shù)依次為當(dāng)前的值、當(dāng)前的位置和原數(shù)組),所有數(shù)組成員依次執(zhí)行該回調(diào)函數(shù),直到找出第一個(gè)返回值為true的成員,然后返回該成員。如果沒有符合條件的成員,則返回undefined
2)findIndex方法的用法與find方法非常類似,返回第一個(gè)符合條件的數(shù)組成員的位置,如果所有成員都不符合條件,則返回-1
3)這兩個(gè)方法都可以接受第二個(gè)參數(shù),用來綁定回調(diào)函數(shù)的this對象
4)這兩個(gè)方法都可以發(fā)現(xiàn)NaN,彌補(bǔ)了數(shù)組的indexOf方法的不足
第二類:靜態(tài)函數(shù):
Array.of()
1)誕生原因:Array()構(gòu)造器有一個(gè)總所周知的陷阱,就是只傳一個(gè)參數(shù),且這個(gè)參數(shù)是數(shù)字的話,那么不會(huì)構(gòu)造出一個(gè)值為這個(gè)數(shù)字的單元素的數(shù)組,而是一個(gè)空數(shù)組,其length屬性為這個(gè)數(shù)字;
2)Array.of總是返回參數(shù)值組成的數(shù)組。如果沒有參數(shù),就返回一個(gè)空數(shù)組。
Array.from()
1)用于將兩類對象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對象(arguments, nodelist)和可遍歷(iterable)的對象(Set ,Map, 字符串)
2)第一個(gè)參數(shù)是要轉(zhuǎn)換的數(shù)據(jù),第二個(gè)是可選參數(shù),是一個(gè)映射回調(diào)函數(shù),作用類似于數(shù)組的map方法,用來對每個(gè)元素進(jìn)行處理,將處理后的值放入返回的數(shù)組,還可以傳第三個(gè)可選參數(shù),用于指定第二個(gè)參數(shù)回調(diào)函數(shù)的this
var arrLike = {length: 4,2: "foo", } Array.from(arrLike, item => item || 0) // [0, 0 , "foo", 0]參考資料:《黃皮書》《紅皮書第三版》《犀牛書》《阮大神es6》
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Javascript数组常见的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WWDC 2018:iOS 12 通知的
- 下一篇: 批量修改mp3文件的title等