关于ES5数组方法总结

  • 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

你可能感兴趣的:(关于ES5数组方法总结)