对于数组方法的区别总结

对于数组的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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值