对于数组的every、filter、forEach、map、some方法的区别总结

来源:互联网 发布:手机上好用的网络电视 编辑:程序博客网 时间:2024/05/06 07:55

对于数组的every、filter、forEach、map、some方法的区别总结

最近对数组、JSON格式的遍历方法一直有很多疑问?什么是遍历?感觉一团糟,所有深感基础差,难以理解。下面是我做的一些试验:
以数组var arr=[10,11,12,13]为例;
every
1. 返回的是Boolean值:(比较有趣的事,如果你不返回Boolean值,那它只会执行一次,callback接收三个参数(a,b,c))
2. a是数组值,b是数组下标,c返回的是数组里所有的值,

var arr=[18,10,12,13];var count=0;var ele=arr.every(function(a,b,c){    count++})console.log(ele+';'+count)//false;1
var arr=[18,10,12,13];    var count=0;    var ele=arr.every(function(a,b,c){        count++       return true    })    console.log(ele+';'+count)// true;4

3.由上可以看出我们可以用every来判断整个数组里的值,是否满足我们的条件;

var arr=[18,10,12,13];    var count=0;    var ele=arr.every(function(a,b,c){        count++       return a>6    })    console.log(ele+';'+count)//true;4

some
1.some和上面的every的区别在于:从数组的第一个值开始,依次往后找,只要数组中有值满足条件就停止,并返回Boolean值
map
1.返回新的数组

var arr=[9,10,12,13];    var count=0;    var ele=arr.map(function(a,b,c){        count++    })    console.log(ele+';'+count)// ,,,;4

2.由上可以看出如果没有条件就返回的空值,但还是执行了4次;

var arr=[9,10,12,13];    var count=0;    var ele=arr.map(function(a,b,c){        count++      return a+10    })    console.log(ele+';'+count+';'+arr)//19,20,22,23;4;9,10,12,13

3.可以看出执行的是新数组(没有筛选的能力),原数组没有变;
filter
1.从字面上理解filter是筛选的意思,返回新数组;

var arr=[9,10,12,13];    var count=0;    var ele=arr.filter(function(a,b,c){        count++      return a>10//如果改为a+10;就是没有筛选条件返回原数组值;    })    console.log(ele+';'+count+';'+arr)// 12,13;4;9,10,12,13

forEach
1.forEach只是执行函数,它不像mapp,filter要返回新的数组;

var arr=[9,10,12,13];var count=0;var ele=arr.forEach(function(a,b,c){    count++  return arr[b]=(arr[b]+10)})console.log(ele+';'+count+';'+arr)//undefined;4;19,20,22,23

小结:
1.every,some,返回的是Boolean值;
2.map,filter返回的是新的数组;
3.forEach只是执行函数没有返回值;
4.Object.keys(arr)—-自己动手试试;

以上总结的比较简单,应该还有其它的没有总结到,有兴趣补充的朋友可以写到留言里面;大家相互帮助嘛;

0 0
原创粉丝点击