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