foreach, map,filter,reduce,some,every

  <script>

// forEach方法最大的好处就是便于使用,而且不用定义额外的参数变量,

// 但是从效率及性能角度来说它是劣于原始for循环的,而且也不能强制return结束循环

        var a=[1,2,3];

        a.forEach(function(value,key,arr){

            console.log(value) // 1,2,3

            console.log(key) //0,1,2

            console.log(arr) //三次结果都为[1,2,4] 该参数没有啥用

 

        })

 

        // return在foreach语句是没有效果的,map可以改变当前循环的值,

        // 并且最终会返回一个新的被改变过值之后的数组,map一般用来处理需要修改某一个数组的值

        var a=[1,2,3]

        var b=a.map(function(vlaue,key,arr){

            console.log(value) //1,2,3

            console.log(key) //0,1,2

            console.log(arr) //三次结果都为[1,2,3]

            return value+1;

        })

        console.log(a); //结果为[1,2,3]

        console.log(b); //结果为[2,3,4]

 

        // filter和map不同,map目的 是为了改变值,而filter目的是为了去掉不要的值,在循环的时候

        // 如果返回的是false那么就表示本次循环的不添加该值,返回true则相反表示要添加到新建的数组中

        var a=[1,2,3]

        var b=a.filter(function(value,key,arr){

            console.log(value); //1,2,3

            console.log(key);  //0,1,2

            console.log(arr)  //三次结果都为[1,2,3]

            if(vlaue===3){

                return false

            }

            return true

        })

        console.log(a) //[1,2,3]

        console.log(b) //[1,2]

 

        // reduce的不同之处在于累加,和其它几个内置不同的地方,它的

        // 第二个参数不是this对象,而是初始累加值(如果不设置的话数组会乱掉),

        // 而且回调函数的个数也不同,比其他的多一个,而且还在开始多加一个参数,

        // 第一个参数记录的是上一次循环的累加值

        var a=[1,2,3]

        var b=a.reduce(function(count,value,key,arry){

            console.log(count); //0,1,3

            console.log(value);  //1,2,3

            console.log(key)     //0,1,2

            console.log(arr)       //[1,2,3]

            return count+value;

        },0);

        console.log(a) //结果为[1,2,3]

        console.log(b)     //结果为6

 

        // some的不同之处在于它返回的布尔值,他的作用有点像filter,

        // 不过他的目的不是为了刷选返回数组,而是为了筛选该数组是否有满足你要的值,

        // 而且找到符合条件的值返回一次true之后就不再继续执行了。

        var a=[1,2,3]

        var b=a.some(function(value,key,arry){

            console.log(value); //1,2

            console.log(key);  //0,1

            console.log(arr)  //三次结果都为[1,2,3]

            return value===2;

        }) 

        console.log(a) //结果为[1,2,3]

        console.log(b)     //结果为true

 

       // some和every作用是一样的,只不过some当找到之后返回的是true,

        // 而every找到之后返回的是false而已

        var a=[1,2,3]

        var b=a.every(function(value,key,arry){

            console.log(value); //1,2

            console.log(key);  //0,1

            console.log(arr)  //三次结果都为[1,2,3]

            return value===2;

        }) 

        console.log(a) //结果为[1,2,3]

        console.log(b)     //结果为false

        

        // indexOf在数组循环过程中会和传入的参数比对,如果是比对成功,

        // 那么终止循环,返回对比成功的下标

        var a=[1,2,3]

        var b=a.indexOf(2)

        console.log(a) //[1,2,3]

        console.log(b)  //1

         

        // lastIndexOf和indeOf作用一致,但查找方向不同,indexOF是正向查找,

        // lastIndexOf是逆向查找,找到之后返回成功的下标

        var a=[1,2,3,1]

        var b=a.lastIndexOf(1)

        console.log(a) //[1,2,3,1]

        console.log(b)  //1

       

          //for.. in

        var a=[1,2,3];

        for(var key in a){

            console.log(key); //0,1,2

        }

        var b={0:1,1:2,2:3}

        for(var key in b){

            console.log(key)  // 0,1,2

        }

 </script>

 

</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值