關於ES5陣列方法總結

weixin_34214500發表於2018-05-09
  • indexOf 查詢陣列內指定元素的位置,從前往後查詢,查詢到後返回其索引值,沒有查詢到返回-1
 var arr=[1,2,3,4,5]
        console.log(arr.indexOf(2))   //返回值是1
  • laseindexOf(element) 從後往前查詢陣列內製定元素的位置。
var arr=[1,2,3,2,5]
        console.log(arr.lastIndexOf(2))
        console.log(arr)    //  最後結果為 3  [1,2,3,2,5]
  • forEach 遍歷陣列,引數為一個回撥函式,其中回撥函式有三個引數:1、當前元素;2、當前元素索引值;3、整個陣列

注意:forEach改變了原陣列

 var arr=[1,2,3,2,5]
            arr.forEach(function(e,i){
                arr[i] = e+1
            })
        console.log(arr)          // 最後結果為[2,3,4,3,6]
  • map 遍歷陣列,返回一個由原陣列中的每個元素呼叫一個指定方法後的返回值組成的新陣列,且不改變原陣列。
 var arr=[1,2,3,2,5]
            arr2=arr.map(function(val){
                return val*val
            })
        console.log(arr2)      //  最後輸出結果為 [1,4,9,4,25]
        
  • every(function(element,index,array)) 該函式類似於邏輯判定,回撥函式返回一個布林值。every是指所有函式每個回撥函式都返回是true的時候才會返回true,當遇到false時自動終止執行,返回false。
 var arr=[1,2,-1,2,5]
            
        console.log(arr.every(function(val){
                return val>0
            }))                                       // 最後返回false
  • some(function(element,index,array)) 該函式類似於邏輯判定,回撥函式返回一個布林值。some是存在有一個回撥函式返回true的時候終止執行並返回true,否則返回false。
 var arr=[-1,-2,-1,2,-5]
            
        console.log(arr.some(function(val){
                return val>0
            }))             //  最後返回值是 true
  • .filter(function(element)) 返回陣列的一個子集,回撥函式用於邏輯判斷是否返回,返回true則把當前元素加入到返回陣列中,false則不加
  var arr=[1,2,3,4,5]
            
        console.log(arr.filter(function(val){
                return val%2 === 0
            }))                   // 最後的結果是[2,4]
  • reduce(function(v1,v2),value) 遍歷陣列,呼叫回撥函式,將陣列元素組合成一個值,reduce從索引最小值開始。1、回撥函式:把兩個值合為一個,並返回結果;2、value是一個初始值,可選
 var arr=[1,2,3,4,5]
            
        console.log(arr.reduce(function(v1,v2){
            return v1+v2
        }))          //  最後結果是15

實現一個reduce函式,作用和原生的reduce類似下面的例子。
Ex:var sum = reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0); => 6
程式碼如下:

 
            function reduce(arr,iterate,value){
                var tamarr = (value === undefined ? []:[value].concat(arr))
                while (tamarr.length >1) {
                    tamarr.splice(0,2,iterate(tamarr[0],tamarr[1]))
                }
                return tamarr[0];
            }
            var sum = reduce([3,5,6],function(v1,v2){return v1+v2},10)
            console.log(sum)   //  輸出結果為24

相關文章