forEach,map,filter,erery,some

111 阅读2分钟

针对数组的方法,他们拥有共同的第一个参数 ——每执行一次的回调函数 (val,key,arr)=>{ } ###forEach,代替普通for let arr=[1,2,3,4,5]; arr.forEach((val,key,arr)=>{ console.log(val,key,arr) }) 打印出来的结果是:每一项的值,索引,数组本身 1 0 (5) [1, 2, 3, 4, 5] 2 1 (5) [1, 2, 3, 4, 5] 3 2 (5) [1, 2, 3, 4, 5] 4 3 (5) [1, 2, 3, 4, 5] 5 4 (5) [1, 2, 3, 4, 5] 本很没有返回值。

###map()“映射” 就是原数组经过一定的处理被“映射”成对应新数组。 比如我们有一个函数f(x)=x的平方, 要把这个函数作用在一个数组[1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map实现, map是array的原生方法,参数就是计算平方的函数

var arr=[4, 2, 5, 1, 3];
var newarr=arr.map(function (val) {
    return val*val
})
这里可以使用箭头函数,简写
var newarr=arr.map( (val)=> { return val*val  });或者更简单一点
var newarr=arr.map( (val)=>  val*val  )
console.log(newarr)   //[16, 4, 25, 1, 9]

正常情况下,需要配合return,返回是一个新的数组。

###filter()过滤 js里用来做过滤条件,vue里也可以使用,比如数组去重,过滤掉那些重复项, 过滤一些不合格“元素”, 如果回调函数返回true,就留下来

var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2];
 var arr2 = arr.filter((val, index,self)=>self.indexOf(val)===index)
 console.log(arr2); //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]

第二个例子    
    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    var result =arr.filter(o=>o%2==0);
    console.log(result); //2  4  6  8

以上是简写,实际是这样的
let arr = [1, 2, 3, 4, 5, 6, 7,8];
    let newarr = arr.filter((val,key,arr)=>{
       return val%2==0;
    });
    console.log(newarr);   //[2, 4, 6, 8]
根据过滤条件返回一个新的数组

###every(),some()返回的是布尔值 arr.some(): 类似查找, 数组里面某一个元素符合条件,返回true arr.every(): 数组里面所有的元素都要符合条件,才返回true

var res=arr.some(item=>{  return item>0  })//true
var res=arr.every(item=>{  return item>0  })//false
var res=arr.every(item=>{  return item>=0  })//true
上面是简写,实际是这样的
let arr = [1, 2, 3, 4, 5, 6, 7,8];
    let newarr = arr.some((val,key,arr)=>{
       return val>2;
    });
    console.log(newarr);