forEach,map,filter,erery,some

针对数组的方法,他们拥有共同的第一个参数
——每执行一次的回调函数 (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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容