概述
对于数组的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)—-自己动手试试;
以上总结的比较简单,应该还有其它的没有总结到,有兴趣补充的朋友可以写到留言里面;大家相互帮助嘛;
====2018/1/23
1、concant 返回新的数组
数组的拼接
var bb = [2]
bb.concat(5);//[2,5]
bb.concat([5]);//[2,5]
bb.concat([5],[7,[8]]);//[2,5,7,[8]]
2、from
将对象转为真正的数组
var a = {
"0":1,
"1":2,
"length":2
}
Array.from(a);//[1,2]
Array.prototype.slice.call(a)//[1,2]
3、of
将一组数转成数组
Array.of(“hello”);//[“hello”];
4、copyWithin改变当前数组
接收三个参数,first->指定替换起始位置,second->需要替换的数起始位置,third->需要替换的数的结束位置,没有默认到最后一个;
var aa = [2,3,4,5,6,7]
aa.copyWithin(0,2,3)//[4, 3, 4, 5, 6, 7]
// 拿出aa[2]-aa[3]的数,从上面看是数字4,从第a[0]开始替换。因为只有一个替换的数,所以就把4 替换原来的2;
最后
以上就是专注蜜粉为你收集整理的对于数组方法的区别总结的全部内容,希望文章能够帮你解决对于数组方法的区别总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复