前端面试基本---forEach、filter、some大合集

Code is never die !

1.0 数组方法forEach遍历数组 ***

  • 语法:
var arr = [1,2,3]; 
arr.forEach(function(value, index, array) {
       //参数一是:数组元素
       //参数二是:数组元素的索引
       //参数三是:当前的数组
 })
  //相当于数组遍历的 for循环 没有返回值
function forEach(fn){
    for(var i=0;i<this.length;i++){
        fn(this[i],i,this);
    }
}
  • 代码:
    <script>
        // forEach 迭代(遍历) 数组
        var arr = [1, 2, 3];
        var sum = 0;
        arr.forEach(function(value, index, array) {
            console.log('每个数组元素' + value);
            console.log('每个数组元素的索引号' + index);
            console.log('数组本身' + array);
            sum += value;
        })
        console.log(sum);
    </script>

2.0 数组方法filter过滤数组 ***

  • 语法:
  var arr = [126648837];
  var newArr = arr.filter(function(value, index,array) {
  	 //参数一是:数组元素
     //参数二是:数组元素的索引
     //参数三是:当前的数组
     return value >= 20;
  });
  console.log(newArr);//[66,88] //返回值是一个新数组
function myFilter(fnCallback){
    // 根据fnCallback的返回值来进行过滤
    // 返回值就是过滤条件
    var tj = fnCallback(12,0,arr);
    if(tj){
        newArr.push(12);
    }
}
  • 代码:
    <script>
        // filter 筛选数组
        var arr = [12, 66, 4, 88, 3, 7];
        var newArr = arr.filter(function(value, index) {
            // return value >= 20;
            return value % 2 === 0;
        });
        console.log(newArr);
    </script>

3.0 数组方法some ***

  • 语法:
some 查找数组中是否有满足条件的元素 
 var arr = [10304];
 var flag = arr.some(function(value,index,array) {
     //参数一是:数组元素
     //参数二是:数组元素的索引
     //参数三是:当前的数组
     return value < 15;
  });
console.log(flag);//返回值是布尔值,只要查找到满足条件的一个元素就立马终止循环

// some的源码
function some(fn) {
    for (var i = 0; i < this.length; i++) {
        var result = fn(this[i], i, this);
        if(result == true){
            return true;
        }
    }
}
  • 代码:
    <script>
        // some 查找数组中是否有满足条件的元素 
        // var arr = [10, 30, 4];
        // var flag = arr.some(function(value) {
        //     // return value >= 20;
        //     return value < 3;
        // });
        // console.log(flag);
        var arr1 = ['red', 'pink', 'blue'];
        var flag1 = arr1.some(function(value) {
            return value == 'pink';
        });
        console.log(flag1);
        // 1. filter 也是查找满足条件的元素 返回的是一个数组 而且是把所有满足条件的元素返回回来
        // 2. some 也是查找满足条件的元素是否存在  返回的是一个布尔值 如果查找到第一个满足条件的元素就终止循环
    </script>

总结

名称作用参数返回值备注
forEach遍历数组,取出数组中的每一项function(value,index,array){}没有返回值不会使用回调函数的返回值
filter遍历数组,筛选出满足条件的项,将满足条件的项放到新数组中,并且返回function(value,index,array){}返回存放了满足条件的项的新数组如果发现回调函数,返回了true,就会将当前的value,放到新数组中
some遍历数组,判断是否有满足条件的元素,如果有返回true,如果没有返回falsefunction(value,index,array){}返回true/false如果发现回调函数,返回了true,就会停止遍历

Ending…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rainux.

生活最美——开心最大

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值